Как агрегировать данные группы по дате? - PullRequest
1 голос
/ 03 марта 2020

У меня запрос примерно такой:

SELECT id, site, clicks, approved, year, month, day
FROM df

id и клики являются целыми числами; сайт, год, месяц, день - строка; утверждено - логическое значение.

Теперь я хочу увидеть количество кликов за каждый месяц / год. Для этого я хочу суммировать клики, группируя год и месяц.

Как это сделать?

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Возможно, функция concat () - это точка.

select x.*
into #df
from
(
SELECT 1 as id, 'a' as site, 23 as clicks, 1 as approved, '2020' as year, '1' as    month, '1' as day
UNION ALL
SELECT 2 as id, 'a' as site, 1 as clicks, 1 as approved, '2020' as year, '1' as month,     '1' as day
UNION ALL
SELECT 3 as id, 'a' as site, 3 as clicks, 1 as approved, '2020' as year, '3' as month,     '1' as day
UNION ALL
SELECT 4 as id, 'a' as site, 11 as clicks, 1 as approved, '2020' as year, '4' as     month, '1' as day
UNION ALL
SELECT 5 as id, 'a' as site, 345 as clicks, 1 as approved, '2020' as year, '5' as     month, '1' as day
UNION ALL
SELECT 6 as id, 'a' as site, 88 as clicks, 1 as approved, '2020' as year, '6' as     month, '1' as day
UNION ALL
SELECT 7 as id, 'a' as site, 1 as clicks, 1 as approved, '2020' as year, '12' as     month, '1' as day
) x;

select 
    concat(year, '_', month) yyyy_mm
    , sum(clicks) clicks_total
from #df
group by 
    concat(year, '_', month)

enter image description here

1 голос
/ 03 марта 2020

Попробуйте использовать GROUP BY:

SELECT year, month, SUM(clicks) AS total
FROM df
GROUP BY year, month;

Примечание: я не знаю, будет ли имя таблицы df коротким для фрейма данных, или если вы используете R или Python здесь , Но в чистом SQL желательно просто поддерживать один столбец даты, а не хранить год, месяц и день как отдельные компоненты.

...