对于超过600 MHz的PC速度的每个值,找出速度相同的PC的平均价格。结果集:速度,平均价格

时间:2016-06-30 11:46:00

标签: sql sql-server select group-by average

表是PC(代码,型号,速度,内存,高清,CD,价格) 我使用了这个查询:

SELECT distinct speed, AVG(price) AS avg_price
FROM pc where speed > 600  group by speed,price

但它正在显示

actual result

但正确的输出是

expected result

2 个答案:

答案 0 :(得分:1)

您只需要按速度对其进行分组,只需从group by子句中删除价格部分,如下所示:

SELECT speed, AVG(price) AS avg_price
FROM pc
WHERE speed > 600
GROUP BY speed

编辑:此外,由于聚合的工作原理,因此无需区分行,因为它们已经区分开来。

答案 1 :(得分:1)

您应该计算每个速度的平均价格。通过在price条款中添加group by,您可以为pricespeed的每个组合生成一个不同的行(平均价格,每个价格,价格)本身)。把它放在那里,你应该没问题:

SELECT   speed, AVG(price) AS avg_price
FROM     pc 
WHERE    speed > 600
GROUP BY speed

(顺便说一句,在分组列中使用distinct在技术上并不是错误的,但它是多余的)。