У меня есть данные только с 3 атрибутами
название болезнь да нет
Меня интересует частота того, сколько раз кто-то болел определенной группой вирусов, будь то один, два или три раза.
Итак, я получаю такую таблицу
Frequency - Count
F1 300
F2 121921
F3 121
F4 2
F5+ 2323
Это часть кода, который я пытался написать. Бит, на котором я застрял, заключается в том, как я могу сказать SQL, что, когда человек не был подвержен воздействию вируса, дайте ему оценку 0, если это один раз, то 1, дважды, затем 2.
SELECT
CASE WHEN F0 = 0 THEN 'F0'
WHEN F1 = 1 THEN 'F1'
WHEN F2 = 1 THEN 'F2'
wHEN F3 = 3 THEN 'F3'
WHEN F4 = 4 THEN 'F4'
WHEN F5 >= 5 THEN 'F5
END AS Virus_Frequency,
COUNT(*) AS VIRUS_COUNT
FROM
(
SELECT
distinct name,
SUM(CASE WHEN illness in (43598435, 24343, 45413, 2455, 54574511, 2074123, 34351153) THEN 0 END) AS F0,
извините за несчастный случай, когда я перепечатал это. Я не могу предоставить образцы данных в качестве медицинских данных. Желаемым результатом была бы болезнь, которую я сгруппировал как вирус (43598435, 24343, 45413, 2455, 54574511, 2074123, 34351153), которые представляют собой числа, обозначающие разные вирусы. Я решил сгруппировать их, поскольку они принадлежат к одному семейству вирусов. Мне просто нужна таблица частот, показывающая, сколько раз в этих группах кто-то мог заболеть вирусом.


Я думаю, вам нужна гистограмма запроса гистограмм:
SELECT VIRUS_COUNT, COUNT(*) as person_count, MIN(user_id), MAX(user_id)
FROM (SELECT user_id, COUNT(*) as VIRUS_COUNT
FROM t
WHERE Virus_id in (43598435, 24343, 45413, 2455, 54574511, 2074123, 34351153)
GROUP BY user_id
) t
GROUP BY VIRUS_COUNT
ORDER BY VIRUS_COUNT;
Я включаю в такой запрос образцы идентификаторов пользователей, чтобы получить ссылки для дальнейшего изучения.
«У меня есть данные только с тремя атрибутами». И ни один из них не называется
user_idилиvirus_id, так что я действительно запутался. Примеры данных и желаемые результаты действительно помогут.