У меня есть данные, которые пользователи представляют, формулировки не совсем одинаковы, но есть сходство, см. Ниже пример
---No | Catergory
526 HIV
418 HIV/AIDs
207 RVD
86 HIV/AIDS.
84 HIV INFECTION
58 HIV PATIENT ON HAART
54 RETROVIRAL DISEASE
44 LIPODYSTROPHY
39 MALARIA
36 HIV MANAGEMENT
36 Chronic Myeloid Leukemia
Я хочу получить общее количество и так, чтобы все строки с ВИЧ, ВИЧ, Ретро были сгруппированы как одна под категорией, подобной этой
category | number
------------------
HIV | 1500
----------------------
MALARIA | 39
......
Какие-либо предложения?
Группа использует выражение CASE
, что-то вроде этого:
SELECT
CASE WHEN Category LIKE '%HIV%' OR Category LIKE '%Retro%'
THEN 'HIV'
ELSE Category END AS Category,
COUNT(*) AS number
FROM yourTable
GROUP BY
CASE WHEN Category LIKE '%HIV%' OR Category LIKE '%Retro%'
THEN 'HIV'
ELSE Category END;
Точная логика, которую вы используете для сопоставления различных категорий в ведро ВИЧ, может отличаться от того, что я перечислял выше. Возможно, вам придется просто использовать IN
и сравнить с полным списком категорий для сопоставления.