简体   繁体   English

计数在SELECT DISTINCT查询中?

[英]Count having in a SELECT DISTINCT query?

So I have this query: 所以我有这个问题:

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

How would I add to this to only get count(s.ID) > 20 so I am only getting distinct city/state/zips that have above 20 IDs in the table? 我如何添加到此只能获得计数(s.ID)> 20,所以我只获得表中有20个以上ID的不同城市/州/拉链?

I assume I need some sort of subquery, but I am unsure of how to accomplish it. 我假设我需要某种子查询,但我不确定如何实现它。 Thank you. 谢谢。

Group by the values you want to select and take only those groups having more than 20 records 按要选择的值进行分组,并仅采用具有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

Just another way using a subquery 使用子查询的另一种方式

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

Use HAVING if you need to filter on aggregates. 如果需要过滤聚合,请使用HAVING HAVING is applied after grouping such as below : 在分组后应用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;

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

I'm not exactly sure how it would work with your data. 我不确定它如何适用于您的数据。

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

Obviously you don't need to GROUP BY as you are selecting DISTINCT... So could be something like this? 显然你不需要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

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM