【问题标题】:For each value of PC speed that exceeds 600 MHz, find out the average price of PCs with identical speeds. Result set: speed, average price对于每个超过 600 MHz 的 PC 速度值,找出具有相同速度的 PC 的平均价格。结果集:速度、平均价格
【发布时间】: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


    【解决方案1】:

    您应该计算每个速度的平均价格。通过将price 添加到group by 子句,您将根据pricespeed 的组合生成不同的行(平均价格,每个价格,即价格本身)。把它从那里放下,你应该没问题:

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

    (顺便说一句,在分组列上使用distinct 在技术上并没有错,但这是多余的)。

    【讨论】:

      【解决方案2】:

      您只需按速度分组,只需从分组条件中删除价格部分,如下所示:

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

      编辑:另外,不需要区分行,因为它们已经是不同的,因为聚合是如何工作的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多