从groupby的结果中删除表中的行

时间:2012-11-14 16:27:07

标签: sql

我有下表 http://sqlfiddle.com/#!3/7f078/1

好的,我想做的是GROUP BY schoolid然后计算每所学校的孩子数量。这很简单。但我想删除一所拥有schoolinclude = 1的孩子少于10个的学校。所以基本上,对于某个特定的学校,请查看所有schoolinclude = 1的孩子,然后计算这些孩子。如果学校有不到10个孩子,我希望这所学校被删除。我想删除这个学校的原始表格。

最好的办法是什么?

3 个答案:

答案 0 :(得分:1)

听起来这可能是学校的问题,所以我不打算给出完整的答案,但是:

查看HAVING条款http://www.w3schools.com/sql/sql_having.asp

答案 1 :(得分:1)

您需要将HAVING子句实现为count(students),类似于此:

select *
from table_name
where schoolmident not in (SELECT schoolmident
                            FROM table_name
                            where schoolinclude = 1
                            group by schoolmident
                            having count(studentuid) < 10);

请参阅SQL Fiddle with Demo

答案 2 :(得分:0)

select *
from (
   select schoolmident
   from table_name
   where schoolinclude = 1
   group by schoolmident
   having count(studentuid) > 9) as a 
      join table_name as b
      on a.schoolmident = b.schoolmident