SQL按记录数过滤

时间:2013-11-21 18:51:21

标签: sql postgresql

我有一个表格表格:(答案必须适用于PostGreSQL 9.2

StateName,ContryName,Pop等//顺便说一下状态也可能是省,我用它们可互换

我想删除任何状态太多的国家/地区

这是一个过滤器,但由于我按国家/地区分组(states.admin),我收到错误,因为states.name不在group子句中。

我想要一个过滤的表,只删除超过100个州的国家/地区的所有行。

我有道理吗?我假设我需要某种WHERE子查询。

SELECT 
  states.name,
  states.admin
FROM
  vector.states
GROUP BY 
  states.admin
HAVING COUNT(*) < 100
ORDER BY
  states.admin ASC;

1 个答案:

答案 0 :(得分:6)

SELECT s.name,s.admin 
FROM states s
INNER JOIN (
SELECT ss.admin
FROM states ss
GROUP BY ss.admin
HAVING COUNT(*) < 100
) a ON a.admin = s.admin
ORDER BY s.admin ASC;

sqlfiddle demo