[英]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.