Как разбить группы запросов на частоты / вхождения в SQL - PullRequest
0 голосов
/ 10 мая 2018

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

1 Ответ

0 голосов
/ 10 мая 2018

Я думаю, вы хотите запрос гистограммы гистограмм:

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;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...