SQL使用数据透视表对不同国家/地区的价格范围进行平均

时间:2019-05-18 18:08:01

标签: sql-server pivot

我有一个数据库,其中包含餐厅,价格范围(低,中或高),餐厅所在的国家和评论(整数)。

因此,示例输出如下:

Country |  price range |  score
USA     |  Low         |  5
Italy   |  Med         |  3
England |  High        |  1
USA     |  Med         |  4

现在,我需要以某种方式显示每个国家/地区在每个范围内的平均得分。意思是每个国家/地区每个范围的平均值,当然需要使用数据透视图来显示它们,尽管我还没有做到。我该怎么办?

2 个答案:

答案 0 :(得分:1)

试试这个-

SELECT Country,
AVG(CASE WHEN [price range] = 'low' THEN Score ELSE NULL END) low_Avg,
AVG(CASE WHEN [price range] = 'medium' THEN Score ELSE NULL END) medium_Avg,
AVG(CASE WHEN [price range] = 'high' THEN Score ELSE NULL END) high_Avg
FROM your_table
GROUP BY Country 

答案 1 :(得分:0)

通过PIVOT

尝试以下查询
SELECT  Country AS [Average per Country],
        [Low], [Med], [High]
FROM (
    SELECT [Country], [PriceRange], [Score]
    FROM [dbo].[Restaurants]
) AS SourceTable
PIVOT (
    AVG(Score)
    FOR [PriceRange] IN ([Low], [Med], [High])
) AS PivotTable