Эта таблица представляет собой событие отслеживания «пульса», где каждую минуту создается одна строка для каждого стримера, пока этот стример активен. Если стример работает 60 минут, в этой таблице будет сгенерировано 60 строк
Create Table minute_streamed
(
time_minute datetime ,
username varchar(50) ,
category varchar(50) ,
concurrent_viewers int
)
Insert into minute_streamed values ('2020-03-18 12:00:00', 'alex','Fornite',125) ;
Insert into minute_streamed values ('2020-03-18 12:01:00', 'alex','Fornite',130) ;
Insert into minute_streamed values ('2020-03-19 15:30:00', 'jamie','Just Chatting',13) ;
Insert into minute_streamed values ('2020-03-19 15:31:00', 'jamie','Food & Drink',15) ;
Insert into minute_streamed values ('2020-03-20 10:30:00', 'rick','Call of Duty: Black Ops',150) ;
Insert into minute_streamed values ('2020-03-20 10:31:00', 'rick','Call of Duty: Modern Warfare',120) ;
Insert into minute_streamed values ('2020-04-21 09:30:00', 'rick','Fornite',120) ;
Insert into minute_streamed values ('2020-04-20 10:31:00', 'rick','Call of Duty: Modern Warfare',120) ;
Insert into minute_streamed values ('2020-04-21 09:30:00', 'rick','Fornite',120) ;
Insert into minute_streamed values ('2020-04-20 10:31:00', 'jamie','Call of Duty: Modern Warfare',120) ;
Insert into minute_streamed values ('2020-04-21 09:30:00', 'jamie','Fornite',120) ;
Insert into minute_streamed values ('2020-04-18 12:00:00', 'alex','Fornite',125) ;
Insert into minute_streamed values ('2020-04-18 12:01:00', 'alex','Fornite',130) ;
Insert into minute_streamed values ('2020-06-18 14:00:00', 'alex','Fornite',120) ;
У Alex есть две записи в марте. Это означает, что он транслировал 2 минуты. Таким образом, его часовая трансляция в марте будет 2/60.
Я пытаюсь написать запрос: для каждого календарного месяца выведите список стримеров, которые увеличили свои часы потоковой передачи с предыдущего календарный месяц
Например, у Alex есть две записи за март, две записи за апрель и одна запись за июнь. Итак, он транслировал 2 минуты в марте (потому что у него две записи), 2 минуты в апреле и 1 минуту в июне. Я хочу сравнить его последний месяц, июнь, и предыдущий календарный месяц. В данном случае предыдущий календарный месяц - май, который Алексей не транслировал. Так что я должен сказать, что он не стримил в мае, а стримил в июне. Итак, он увеличил свою потоковую передачу по сравнению с предыдущим календарным месяцем
Это мой код ниже, но я хочу сравнить текущий час потоковой передачи с предыдущим календарным месяцем. Не могли бы вы помочь изменить мой запрос?
select
*
from(
select
*
,lag(total_monthly_hours,1) over(partition by username order by year,month) as prev_month
from(
select
username
,year(time_minute) as year
,month(time_minute) as month
,count(*)/60 as total_monthly_hours
from minute_streamed
group by year(time_minute), month(time_minute), username
order by month(time_minute) desc ) as temp ) as temp2
where total_monthly_hours > prev_month