Использование нескольких, возможно, встроенных условий CASE в SQL - PullRequest
0 голосов
/ 30 июня 2019

В настоящее время я нахожу, сколько игроков в определенных рейтингах входят в команды с различным процентом выигрышей. Я хочу быть в состоянии сделать этот запрос, но в течение нескольких лет, а не только один год. Мой текущий запрос ниже.

SELECT ROUND(Wins, 1) AS 'Winning Percentage',
SUM(CASE WHEN Rating >= 2 and Rating < 5 THEN 1 ELSE 0 END) AS Rating1,
SUM(CASE WHEN Rating >= 5 and Rating < 7 THEN 1 else 0 END) AS Rating2,
SUM(CASE WHEN Rating >= 7 and Rating < 100 THEN 1 ELSE 0 END) AS Rating3 
FROM #temp_table
GROUP BY ROUND(Wins, 1)
ORDER BY ROUND(Wins, 1)

Ожидаемый результат ниже.

Win %    Rating1 Rating 2 Rating 3
0-25%    3       4        2
25%-100% 4       2        1

В #temp_table у меня есть предложение WHERE в течение многих лет. Я хочу быть в состоянии сделать код выше, но через несколько лет. #temp_table в настоящее время имеет переменную @Year, которую я должен вручную ввести для создания каждой # temp_table.

My #temp_table is shown below.

Player Rating Year Win % 
Bonds  10     2014  25%
Smith  2      2011  42%
Bryant 5      2013  33%

1 Ответ

0 голосов
/ 30 июня 2019

Вы можете создать case, который создаст две группы - 0-25% и 25%-100%. Тогда group by это выражение. Вы можете добавить year к запросу, как вы упомянули.

SELECT case when Wins < 25 then '0-25%'
            when Wins between 25 and 100 then '25%-100%' end  AS 'Winning Percentage',
    year,
    SUM(CASE WHEN Rating >= 2 and Rating < 5 THEN 1 ELSE 0 END) AS Rating1,
    SUM(CASE WHEN Rating >= 5 and Rating < 7 THEN 1 else 0 END) AS Rating2,
    SUM(CASE WHEN Rating >= 7 and Rating < 100 THEN 1 ELSE 0 END) AS Rating3 
FROM #temp_table
GROUP BY case when Wins < 25 then '0-25%'
            when Wins between 25 and 100 then '25%-100%' end,
            year
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...