标题可能还没有描述得足够清楚。下面是详细描述:
取得項目(SUM):A
集計項目(GROUP BY):……
抽出条件(WHERE):……
目标数据:SUM(A)大于0的那些纪录。
比如说有10条记录,经过GROUP BY,抽出两条记录,其中一条的SUM(A)>0,这一条是由6条记录集計来的,那么就把这6条记录SELECT *取出来。
开发中的实际问题,看似很简单,希望能尽快得解。
取得項目(SUM):A
集計項目(GROUP BY):……
抽出条件(WHERE):……
目标数据:SUM(A)大于0的那些纪录。
比如说有10条记录,经过GROUP BY,抽出两条记录,其中一条的SUM(A)>0,这一条是由6条记录集計来的,那么就把这6条记录SELECT *取出来。
开发中的实际问题,看似很简单,希望能尽快得解。
是不是group by后得到两条记录?
除了那6条记录sum大于0,剩下的4条记录sum后<=0?那么这样
select sum(A) from table
where
group by 字段
having sum(A)>0
---------- ----------
学生 10
学生 10
学生 10
学生 10
学生 10
学生 10
老师 0
老师 0
老师 0
老师 0已选择10行。SQL> select name,sum(score) from aa group by name having sum(score)>0;NAME SUM(SCORE)
---------- ----------
学生 60
---------- ----------
学生 10
学生 10
学生 10
学生 10
学生 10
学生 10
老师 0
老师 0
老师 0
老师 0已选择10行。SQL> select a.* from aa a where (select sum(score) from aa where name=a.name)>0;NAME SCORE
---------- ----------
学生 10
学生 10
学生 10
学生 10
学生 10
学生 10
已选择6行。
---------- ---------------------------------------
学生 60
学生 60
学生 60
老师 0
老师 0SQL> edSQL> select * from aa a where exists
2 (select 1 from
3 (select name,sum(score) from aa group by name having sum(score)>0) r
4 where a.name = r.name)
5 /NAME SCORE
---------- ---------------------------------------
学生 60
学生 60
学生 60
HAVING SUM(A) > 0
来保证你的条件。