Мне нужно написать запрос, в котором результаты будут сгруппированы по месяцам и годам, а также по «Оценке».Например, данные таблицы:
DECLARE @Scores TABLE (
[SubmissionDate] DATETIME,
[Score] INT,
[Grade] VARCHAR(7)
)
INSERT INTO @Scores VALUES
('2018-08-01', 60, 'AVERAGE'),
('2018-08-01', 50, 'POOR'),
('2018-09-01', 68, 'AVERAGE'),
('2018-09-01', 66, 'AVERAGE'),
('2018-07-01', 64, 'AVERAGE'),
('2018-07-01', 56, 'POOR'),
('2018-08-01', 62, 'AVERAGE'),
('2018-08-01', 80, 'GOOD'),
('2018-09-01', 52, 'POOR'),
('2018-09-01', 54, 'POOR'),
('2018-07-01', 58, 'POOR'),
('2018-08-01', 50, 'POOR'),
('2018-09-01', 82, 'GOOD'),
('2018-09-01', 86, 'GOOD'),
('2018-07-01', 62, 'AVERAGE'),
('2018-07-01', 84, 'GOOD'),
('2018-07-01', 82, 'GOOD'),
('2018-08-01', 88, 'GOOD')
Что мне нужно, так это среднее количество баллов за каждый месяц для каждого класса.Я могу получить среднее значение правильно.Для меня не работает порядок месяцев.Результаты отображаются в алфавитном порядке (август отображается до июля, а затем в сентябре). Правильный порядок должен быть -> июль, август, сентябрь
Вот запрос, который я написал:
;WITH CTE AS(
SELECT
LEFT(UPPER(DATENAME(MM, [SubmissionDate])),3) + '-' + DATENAME(YY, [SubmissionDate]) AS [Range]
,[Score]
,[Grade]
FROM @Scores
)
SELECT [Range], AVG([Score]) AS [AverageScore], [Grade]
FROM CTE GROUP BY [Range], [Grade]
Вот вывод:
Range AverageScore Grade
AUG-2018 61 AVERAGE
JUL-2018 63 AVERAGE
SEP-2018 67 AVERAGE
AUG-2018 84 GOOD
JUL-2018 83 GOOD
SEP-2018 84 GOOD
AUG-2018 50 POOR
JUL-2018 57 POOR
SEP-2018 53 POOR
Мне нужен правильный порядок первого столбца.