簡體   English   中英

計數在SELECT DISTINCT查詢中?

[英]Count having in a SELECT DISTINCT query?

所以我有這個問題:

SELECT DISTINCT s.CITY, s.STATE, SUBSTR(s.ZIP,1,5) FROM table s
WHERE CITY IN (...)
AND STATE IN (...)

我如何添加到此只能獲得計數(s.ID)> 20,所以我只獲得表中有20個以上ID的不同城市/州/拉鏈?

我假設我需要某種子查詢,但我不確定如何實現它。 謝謝。

按要選擇的值進行分組,並僅采用具有20個以上記錄的組

SELECT s.CITY, s.STATE, SUBSTR(s.ZIP,1,5) 
FROM table s
WHERE CITY IN (...)
AND STATE IN (...)
GROUP BY s.CITY, s.STATE, SUBSTR(s.ZIP,1,5) 
HAVING count(*) > 20

使用子查詢的另一種方式

SELECT s.CITY, s.STATE, SUBSTR(s.ZIP,1,5)
FROM Table S JOIN
(
  SELECT ID, COUNT(ID) Cnt
  FROM Table
  GROUP BY ID
) SS
ON S.ID = SS.ID
WHERE CITY IN (...)
AND STATE IN (...)
AND Cnt > 20

如果需要過濾聚合,請使用HAVING 在分組后應用HAVING如下:

SELECT DISTINCT s.CITY, s.STATE, SUBSTR(s.ZIP,1,5), count(s.id) as count FROM table s
WHERE CITY IN (...)
AND STATE IN (...) 
GROUP BY s.CITY, s.STATE, SUBSTR(s.ZIP,1,5)
HAVING count > 20;

您可以查看HAVING子句: https//dev.mysql.com/doc/refman/5.5/en/group-by-handling.html

我不確定它如何適用於您的數據。

SELECT name, COUNT(name) FROM orders
  GROUP BY name
  HAVING COUNT(name) = 1;

顯然你不需要GROUP BY,因為你選擇的是DISTINCT ......那么可能是這樣的嗎?

SELECT DISTINCT s.CITY, s.STATE, SUBSTR(s.ZIP,1,5), COUNT(s.ID) FROM table s HAVING COUNT(s.ID) > 20

希望這可以幫助!

暫無
暫無

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

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