Создание диапазонов из таблицы SQL Server для гистограмм
У меня есть следующая таблица в SQL Server:
-----------------------------
ID Age Gender
1 30 F
2 35 M
3 32 M
4 18 F
5 21 F
Мне нужно выполнить запрос, который будет группировать записи в заданных диапазонах и подсчитывать вхождения. Результаты должны отображаться позже на гистограмме (гистограмма). Я попробовал запрос, похожий на следующий:
SELECT
count(CASE WHEN Age>= 10 AND Age < 20 THEN 1 END) AS '10 - 20',
count(CASE WHEN Age>= 21 AND Age < 30 THEN 1 END) AS '21 - 30',
count(CASE WHEN Age>= 31 AND Age < 35 THEN 1 END) AS '31 - 35',
count(CASE WHEN Age>= 36 AND Age < 40 THEN 1 END) AS '36 - 40',
FROM (SELECT Age FROM Attendees) AS AgeGroups
На данный момент это делает трюк, но не учитывает гендерный столбец. Это приведет к одной строке, которая учитывает частоту каждой возрастной группы:
10-20 21-30 31-35 36-40
0 22 21 13
Если гендер будет рассмотрен, должны быть указаны две записи для каждого пола. Мне нужно увидеть что-то вроде:
Gender 10-20 21-30 31-35 36-40
M 0 12 9 6
F 0 10 12 7
Как мне подойти к этой проблеме?
Ответы
Ответ 1
Просто добавьте столбец Gender
в свой SELECT
, а затем выполните GROUP BY
.
SELECT
Gender,
count(CASE WHEN Age>= 10 AND Age < 20 THEN 1 END) AS [10 - 20],
count(CASE WHEN Age>= 21 AND Age < 30 THEN 1 END) AS [21 - 30],
count(CASE WHEN Age>= 31 AND Age < 35 THEN 1 END) AS [31 - 35],
count(CASE WHEN Age>= 36 AND Age < 40 THEN 1 END) AS [36 - 40]
FROM Attendees AS AgeGroups
GROUP BY Gender