MySQL DISTINCT 呼叫计数(按州)
MySQL DISTINCT call counts by state
我正在尝试按州获取唯一的呼叫计数(无重复呼叫)。例如...
MO 249
OK 220
CA 216
TX 190
KS 158
以下有效(没有错误),但它没有删除欺骗。
SELECT DISTINCT CallFrom, FromState, count(*) AS cnt
FROM `calls`
WHERE DateCreated >= CURDATE() - INTERVAL 2 YEAR AND
(CallTo = '+15555555555' OR CallTo = '+15555555556' )
GROUP BY FromState
ORDER BY cnt DESC
有什么想法吗?提前致谢。
更新:请求了以下 'calls' table 示例...
Index CallTo CallFrom FromState
1 +15555555555 18166283100 MO
2 +15555555556 13307059600 OH
3 +15555555555 17722631600 FL
4 +15555555556 16173024800 MA
5 +15555555556 16173024800 MA
6 +15555555556 16175025500 MA
刚刚意识到我忘记包含 DateCreated 列,但正如我所说,除重复数据删除外,一切正常。此示例的输出将是...
MA 2
MO 1
OH 1
FL 1
你的措辞不是很清楚,但我想你是说你想计算每个州有多少个唯一的 CallFrom 号码。可能有更好的方法来做到这一点,但这会起作用。首先,它构建一个独特的 CallFrom/State 组合列表,然后根据该列表而不是原始数据进行分组和计数:
SELECT FromState, COUNT(*)
FROM
(SELECT DISTINCT CallFrom, FromState
FROM `calls`
WHERE
(CallTo = '+15555555555' OR CallTo = '+15555555556' )
) c
GROUP BY FromState
演示:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d057e3482ec9d5ad4519e58056232e58
我正在尝试按州获取唯一的呼叫计数(无重复呼叫)。例如...
MO 249
OK 220
CA 216
TX 190
KS 158
以下有效(没有错误),但它没有删除欺骗。
SELECT DISTINCT CallFrom, FromState, count(*) AS cnt
FROM `calls`
WHERE DateCreated >= CURDATE() - INTERVAL 2 YEAR AND
(CallTo = '+15555555555' OR CallTo = '+15555555556' )
GROUP BY FromState
ORDER BY cnt DESC
有什么想法吗?提前致谢。
更新:请求了以下 'calls' table 示例...
Index CallTo CallFrom FromState
1 +15555555555 18166283100 MO
2 +15555555556 13307059600 OH
3 +15555555555 17722631600 FL
4 +15555555556 16173024800 MA
5 +15555555556 16173024800 MA
6 +15555555556 16175025500 MA
刚刚意识到我忘记包含 DateCreated 列,但正如我所说,除重复数据删除外,一切正常。此示例的输出将是...
MA 2
MO 1
OH 1
FL 1
你的措辞不是很清楚,但我想你是说你想计算每个州有多少个唯一的 CallFrom 号码。可能有更好的方法来做到这一点,但这会起作用。首先,它构建一个独特的 CallFrom/State 组合列表,然后根据该列表而不是原始数据进行分组和计数:
SELECT FromState, COUNT(*)
FROM
(SELECT DISTINCT CallFrom, FromState
FROM `calls`
WHERE
(CallTo = '+15555555555' OR CallTo = '+15555555556' )
) c
GROUP BY FromState
演示: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d057e3482ec9d5ad4519e58056232e58