MySQL选择查询:具有不同值的SUM()行,来自另一列

时间:2017-07-30 06:25:58

标签: mysql sql

我在使用此SQL select查询时遇到了很多麻烦。我开始相信我需要制作一些临时表,但我可能错了。

我需要显示P_CODE标识的产品销售量超过此表中的平均产品。我面临的问题是有多个条目具有相同的P_CODE。

SELECT LINE.P_CODE FROM LINE
WHERE LINE.LINE_UNITS > (SELECT SUM(LINE.LINE_UNITS) FROM LINE)/(SELECT COUNT(DISTINCT LINE.P_CODE) FROM LINE);

这个选择查询让我接近所需的结果,但实际上我想运行以下内容:

SELECT LINE.P_CODE FROM LINE
WHERE (SELECT SUM(LINE.LINE_UNITS) FROM LINE GROUP BY LINE.P_CODE) > (SELECT SUM(LINE.LINE_UNITS) FROM LINE)/(SELECT COUNT(DISTINCT LINE.P_CODE) FROM LINE);

但我收到此错误

  

错误代码:1242。子查询返回的行数超过1行

对不起,如果我对桌子的介绍很差,我也拿了screenshot。但是我包括它来帮助解释为什么我不能使用AVG()函数。

LINE_UNITS | P_CODE 1 | 13-Q2/P2 5 | 13-Q2/P2 2 | 13-Q2/P2 1 | 1546-QQ2 1 | 2232/QTY 1 | 2238/QPD 1 | 23109-HB 2 | 23109-HB 1 | 23109-HB 1 | 23109-HB 2 | 54778-2T 3 | 54778-2T 1 | 54778-2T 1 | 89-WRE-Q 12 | PVC23DRT 5 | PVC23DRT 3 | SM-18277 3 | WR3/TT3

1 个答案:

答案 0 :(得分:2)

如果没有错,你正在寻找类似的东西

SELECT l.P_CODE
FROM   LINE l
GROUP  BY l.P_CODE
HAVING Sum(l.LINE_UNITS) > (SELECT Sum(LINE_UNITS) / Count(DISTINCT P_CODE)
                            FROM   LINE)