Итак, у меня есть простая таблица информации о студентах колледжа, которая состоит из:
- ID (PK, int, not null)
- Name (varchar (40), null)
- Возраст (int, null)
- Класс (text, null)
- Major (text, null)
Я пытаюсь сгруппироватьученики разных основных классов, например, студенты-инженеры или физики, будут объединены в большую группу STEM. Мне пришлось преобразовать столбец Major в varchar
, поэтому код немного запутан, но вот мой запрос:
SELECT
CASE
WHEN CONVERT(VARCHAR(20), sr.Major) IN ('Calculus', 'Mechanical Engineer', 'Software Engineer', 'Web Design', 'Chemistry', 'Physics', 'Graphic Design')
THEN 'STEM'
WHEN CONVERT(VARCHAR(20), sr.Major) IN ('Pre Med', 'Neuroscience')
THEN 'Medical'
WHEN CONVERT(VARCHAR(20), sr.Major) IN ('Poly Sci', 'Pre Law', 'Visual Comminucatoins', 'Communications', 'Psycology', 'Philosophy', 'History')
THEN 'Social Science'
WHEN CONVERT(VARCHAR(20), sr.Major) IN ('Spanish', 'English', 'Linguistics')
THEN 'Language'
ELSE CONVERT(VARCHAR(20), sr.Major)
END AS Major
FROM dbo.StudentRoster AS sr;
GROUP BY CONVERT(VARCHAR(20), sr.Major);
Результат:
**Major**
Undeclared
STEM
Social Science
Medical
Social Science
Undeclared
Language
Social Science
STEM
Medical
Undeclared
Language
STEM
STEM
Social Science
Undeclared
STEM
Visual Comminucatoin
Social Science
Undeclared
Undeclared
Undeclared
Social Science
STEM
Language
STEM
Как сгруппироватьВыражения CASE, чтобы я мог получить индивидуальные подсчеты для STEM, Medical и т. Д.?