Выходной месяц с наибольшей отменой - PullRequest
0 голосов
/ 19 марта 2019

Я могу получить количество отмененных участников за каждый месяц с 2018 года, используя следующий запрос -

SELECT DATEPART(YEAR, Cancel) [Year],
DATEPART(Month, Cancel) [Month], COUNT(1) [Count]
FROM Subscription
where DATEPART(YEAR, Cancel) >= 2018
GROUP BY DATEPART(year, Cancel),DATEPART(Month, Cancel)
ORDER BY 1,2

Выходные данные

Year    Month    Count
2018    1        6416775
2018    2        458171
2018    3        29963575
2018    4        65393505

Как мне изменить этот запроспоэтому он отображает только месяц с наибольшим количеством отмен?

ОБНОВЛЕНИЕ

Это вывод, который я хочу.Каждый год должен иметь самое высокое значение Count.

Year    Month    Count
2018    4        65393505
2019    2        458171

Месяц 4 в 2018 году был выведен, поскольку он имел наибольшее значение по сравнению с первыми 4 месяцами.

Ответы [ 3 ]

2 голосов
/ 19 марта 2019

Используя order by count desc и выбирая первую запись с помощью top 1, вы можете получить желаемый результат:

SELECT TOP 1 DATEPART(YEAR, Cancel) [Year],
DATEPART(Month, Cancel) [Month], COUNT(1) [Count]
FROM Subscription
where DATEPART(YEAR, Cancel) >= 2018
GROUP BY DATEPART(year, Cancel),DATEPART(Month, Cancel)
ORDER BY Count DESC
0 голосов
/ 19 марта 2019

ПОПРОБОВАТЬ Подписка

SELECT * FROM (SELECT DATEPART(YEAR, Cancel) [Year], DATEPART(Month, Cancel) [Month], COUNT(1) [Count] FROM Subscription WHERE DATEPART(YEAR, Cancel) >= 2018 GROUP BY DATEPART(year, Cancel),DATEPART(Month, Cancel) ORDER BY 1,2) as Table1 WHERE Count = (SELECT MAX COUNT(1) [Count] FROM Subscription WHERE DATEPART(YEAR, Cancel) >= 2018 GROUP BY DATEPART(year, Cancel),DATEPART(Month, Cancel) ORDER BY 1,2)

0 голосов
/ 19 марта 2019

попробуйте, как показано ниже, используя row_number()

with cte as
(
SELECT DATEPART(YEAR, Cancel) [Year],
DATEPART(Month, Cancel) [Month], COUNT(1) [Count]
FROM Subscription
where DATEPART(YEAR, Cancel) >= 2018
GROUP BY DATEPART(year, Cancel),DATEPART(Month, Cancel)
ORDER BY 1,2
)
,cte1 as
( select *,ROW_NUMBER() OVER( partition by [Year] ORDER BY [Count] DESC) rn  from cte
) select * from cte1 where rn=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...