簡體   English   中英

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 

有任何想法嗎? 提前致謝。

更新:請求以下“通話”表示例...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM