根据我提到的链接,我试图做同样的但是出错了
limiting the rows to where the sum a column equals a certain value in MySQL
首先,这是学习计划表:
如果我想获取行,直到CREDIT列的SUM等于18:
如果我想获取行,直到CREDIT列的SUM等于20:
这是我尝试的SQL语句:
SELECT t.matricsno,t.sem,t.credit,
(SELECT SUM(credit) FROM studyplan
WHERE matricsno = 'D031310087')
FROM studyplan t
HAVING SUM(credit) = 18
ORDER BY t.sem,t.subjectcode;
我得到的错误是: ORA-00937:不是单组组功能
感谢您的回复和帮助。
答案 0 :(得分:3)
这是使用累积金额的一个很好的用例。
假设行的顺序由列sem
和subjectcode
明确定义,正如您的查询所暗示的那样,您可以像这样编写查询:
select *
from (select t.*,
sum(t.credit) over (order by t.sem, t.subjectcode) as credit_sum
from studyplan t
where t.matricsno = 'D031310087')
where credit_sum <= 20 -- adjust to desired number of credits
order by sem, subjectcode