MySQL Select Query:SUM()从另一列中选择具有不同值的行

MySQL Select Query:SUM()从另一列中选择具有不同值的行,mysql,sql,Mysql,Sql,我在使用这个SQL select查询时遇到了很多问题。我开始相信我需要做一些临时的桌子,但我可能错了 我需要显示哪些由p_代码标识的产品的销量高于此表中的平均产品。我面临的问题是,有多个条目具有相同的P_代码 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);

我在使用这个SQL select查询时遇到了很多问题。我开始相信我需要做一些临时的桌子,但我可能错了

我需要显示哪些由p_代码标识的产品的销量高于此表中的平均产品。我面临的问题是,有多个条目具有相同的P_代码

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查询使我接近所需的结果,但实际上我希望运行以下操作:

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行

很抱歉,如果我对这张桌子的介绍不好,我也会看一看。但我加入它是为了帮助解释为什么我不能使用AVG()函数


LINE_单位| p_代码
1 | 13-Q2/P2
5 | 13-Q2/P2
2 | 13-Q2/P2
1 | 1546-QQ2
1 | 2232/个
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

如果我没有错的话,你正在寻找这样的东西

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) 

如果我没有错的话,你正在寻找这样的东西

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) 

Mysql
Sql Server
选择您正在使用的一个!!您正在使用哪个数据库。请正确使用标记@Pivot抱歉,我正在使用mysql,我刚刚修复了标记
mysql
Sql Server
请选择您正在使用的标记!!您使用的是哪个数据库。请正确使用标记@Pivot抱歉,我使用的是mysql,我已经修复了一些标记,这正是我需要的!非常感谢,我还不熟悉HAVE条款。这正是我需要的!非常感谢你,我还不熟悉这个条款。