2017-07-30 49 views
0

我在使用此SQL选择查询时遇到了很多麻烦。我开始相信我需要制作某种临时桌,但我可能是错的。MySQL从另一列中选择具有不同值的查询:SUM()行

我需要显示由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。子查询返回多于一行

如果我的演示文稿很抱歉桌子很差,我也拿了一个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

+0

'Mysql' <>'的Sql Server'选择您所使用的一个! –

+0

你正在使用哪个数据库。请正确使用标签@Pivot –

+0

对不起,我正在使用mysql,我刚才修复了标签 – Pivot

回答

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) 
+0

这正是我所需要的!非常感谢,我还不熟悉HAVING条款。 – Pivot

相关问题