繁体   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