列出捐赠总额大于某事物的所有捐赠者

Zhe*_*hew 3 sql oracle

这是表结构

捐赠者(捐赠者ID,姓名)

捐赠(ID,捐赠ID,金额)

这是我的查询:

SELECT donor.name, SUM(donation.amount) "Total"
FROM donor, donation
WHERE donor.donorID = donation.donorID
AND SUM(donation.amount) > 1000;
GROUP BY donor.name
ORDER BY SUM(donation.amount) DESC;
Run Code Online (Sandbox Code Playgroud)

这是错误:

ORA-00934:此处不允许组功能00934. 00000 - "此处不允许组功能"

删除总和(捐赠)时没有错误<1000我如何整合它没有错误?请帮忙.

Gor*_*off 7

您不能在where子句中放置聚合函数.你需要一个having条款:

SELECT donor.name, SUM(donation.amount) "Total"
FROM donor, donation
WHERE donor.donorID = donation.donorID
GROUP BY donor.name
HAVING SUM(donation.amount) > 1000
ORDER BY SUM(donation.amount) DESC;
Run Code Online (Sandbox Code Playgroud)

但是,您应该学会使用正确的join语法和表别名:

SELECT d.name, SUM(dn.amount) as "Total"
FROM donor d JOIN
     donation dn
     ON d.donorID = dn.donorID
GROUP BY d.name
HAVING SUM(dn.amount) > 1000
ORDER BY SUM(dn.amount) DESC;
Run Code Online (Sandbox Code Playgroud)