【发布时间】:2016-06-30 11:45:59
【问题描述】:
表是 PC(代码、型号、速度、内存、高清、光盘、价格) 我使用了这个查询:
SELECT distinct speed, AVG(price) AS avg_price
FROM pc where speed > 600 group by speed,price
但它正在显示
但正确的输出是
【问题讨论】:
标签: sql sql-server select group-by average
表是 PC(代码、型号、速度、内存、高清、光盘、价格) 我使用了这个查询:
SELECT distinct speed, AVG(price) AS avg_price
FROM pc where speed > 600 group by speed,price
但它正在显示
但正确的输出是
【问题讨论】:
标签: sql sql-server select group-by average
您应该计算每个速度的平均价格。通过将price 添加到group by 子句,您将根据price 和speed 的组合生成不同的行(平均价格,每个价格,即价格本身)。把它从那里放下,你应该没问题:
SELECT speed, AVG(price) AS avg_price
FROM pc
WHERE speed > 600
GROUP BY speed
(顺便说一句,在分组列上使用distinct 在技术上并没有错,但这是多余的)。
【讨论】:
您只需按速度分组,只需从分组条件中删除价格部分,如下所示:
SELECT speed, AVG(price) AS avg_price
FROM pc
WHERE speed > 600
GROUP BY speed
编辑:另外,不需要区分行,因为它们已经是不同的,因为聚合是如何工作的。
【讨论】: