Подсчет отдельных предметов по совокупной группировке - PullRequest
0 голосов
/ 07 мая 2019

У меня есть следующий запрос, который получает различное количество элементов для каждого владельца, сгруппированные по месяцам

Запрос:

SELECT owner, Month(date) AS month, Count(DISTINCT( item )) AS cnt
        FROM   table_name
        WHERE  impact < 3
               AND group IN ( 'Group1', 'Group2', 'Group3')
               AND date >= '2019-01-01'
               AND date <= '2019-05-02 23:59:59'
        GROUP  BY owner, month
        ORDER  BY owner, month; 

Это производит количество отдельных элементов для каждого владельца за каждый месяц. То, что я хочу, - это количество отдельных предметов для каждого владельца за совокупные месяцы. В феврале я хочу, чтобы количество отдельных предметов для каждого владельца было с января по февраль. В марте я хочу, чтобы количество предметов различалось для каждого владельца с января по март и т. Д. Может кто-нибудь помочь, пожалуйста, как это сделать?

1 Ответ

0 голосов
/ 07 мая 2019

Если я правильно понимаю, вы хотите, чтобы совокупный подсчет основывался на первый раз , который элемент появляется для владельца.В MySQL 8+ вы можете использовать оконные функции:

SELECT owner, Month(date) AS month,
       COUNT(*) as this_month_cnt,
       SUM(COUNT(*)) OVER (PARTITION BY owner ORDER BY MONTH(date)) as running_cnt
FROM  (SELECT t.owner, t.item, MIN(t.date) as date
       FROM table_name
       WHERE impact < 3 AND
             group IN ( 'Group1', 'Group2', 'Group3') AND
             date >= '2019-01-01' AND
             date < '2019-05-03'
       GROUP  BY owner, item
      ) t
GROUP BY owner, month
ORDER  BY owner, month; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...