SQL использует pivot для определения среднего диапазона цен в разных странах - PullRequest
0 голосов
/ 18 мая 2019

У меня есть база данных с ресторанами, с их ценовым диапазоном (низкий, средний или высокий), страной, в которой они находятся, и количеством отзывов (целое число).

Пример вывода такой:

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

Теперь мне нужно как-то показать средний балл по стране за диапазон. Имеется в виду среднее значение по каждому диапазону в каждой стране и, конечно, нужно показать их с помощью разворота, хотя мне не удалось это сделать. Что я могу сделать, пожалуйста?

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Попробуйте это-

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 
0 голосов
/ 18 мая 2019

Попробуйте следующий запрос через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...