Как разбить группы запросов на частоты / вхождения в SQL

У меня есть данные только с 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,

«У меня есть данные только с тремя атрибутами». И ни один из них не называется user_id или virus_id, так что я действительно запутался. Примеры данных и желаемые результаты действительно помогут.

Gordon Linoff 10.05.2018 17:09

извините за несчастный случай, когда я перепечатал это. Я не могу предоставить образцы данных в качестве медицинских данных. Желаемым результатом была бы болезнь, которую я сгруппировал как вирус (43598435, 24343, 45413, 2455, 54574511, 2074123, 34351153), которые представляют собой числа, обозначающие разные вирусы. Я решил сгруппировать их, поскольку они принадлежат к одному семейству вирусов. Мне просто нужна таблица частот, показывающая, сколько раз в этих группах кто-то мог заболеть вирусом.

stacker 10.05.2018 17:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вам нужна гистограмма запроса гистограмм:

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;

Я включаю в такой запрос образцы идентификаторов пользователей, чтобы получить ссылки для дальнейшего изучения.

Другие вопросы по теме