SQL查询可能是子查询问题或内部联接

时间:2018-09-25 15:07:34

标签: sql oracle join

我有一个作业要求:

“对于总销售额大于$ 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;

我得到的结果是: “此处不允许使用分组功能。”

我已附上应该用于此问题的相关表格的屏幕截图。同样,这不是我通常会做的事情,完全反对欺诈学校,但是请帮助。

enter image description here

2 个答案:

答案 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);