我有一个作业要求:
“对于总销售额大于$ 250的每个客户,列出客户ID,客户名称和客户总销售额。为所有计算字段提供描述性名称。”
通常,我永远不会来S.O。来寻找作业答案,就像我将其推翻并弄清楚一样,但这似乎使我陷入困境。
这是我对问题的不正确查询:
SELECT customerid
FROM customer
WHERE customerid In (SELECT sum(untipricesold) AS totalSales
FROM orderline WHERE sum(orderline.unitpricesold) > 250)
GROUP by customerid;
我得到的结果是: “此处不允许使用分组功能。”
我已附上应该用于此问题的相关表格的屏幕截图。同样,这不是我通常会做的事情,完全反对欺诈学校,但是请帮助。
答案 0 :(得分:3)
在聚集或摸索后进行过滤时,需要HAVING
子句:
所以,我倾向于JOIN
:
SELECT c.customerid , c.customername, o.TotalSales
FROM customer c INNER JOIN
(SELECT customerid, SUM(untipricesold) AS TotalSales
FROM orderline O
GROUP by customerid
HAVING SUM(untipricesold) > 250
) o
ON o.customerid = c.customerid;
答案 1 :(得分:1)
您需要一个HAVING
子句。另外,您可能想在子查询中选择customerid
而不是总和,因为您正在与外部查询中的customerid
进行比较。
SELECT customerid
FROM customer
WHERE customerid IN (SELECT customerid FROM orderline
GROUP by customerid HAVING SUM(untipricesold) > 250);