with main as (
select
c.user_id
,date(c.start_time) as start_date
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
join listen_rcd c on b.song_id = c.song_id
where a.singer_id in (1,2,3,4,6)
group by 1,2
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
start_date - INTERVAL seq DAY AS mark,
COUNT(*) as mark_cnt
from
(
select
user_id
,start_date
,DENSE_RANK() OVER (PARTITION BY user_id ORDER BY start_date) as seq
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with main as (
select
c.user_id
,date(c.start_time) as start_date
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
join listen_rcd c on b.song_id = c.song_id
where a.singer_id in (1,2,3,4,6)
group by c.user_id
,start_date
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
start_date - INTERVAL seq DAY AS mark,
COUNT(*) as mark_cnt
from
(
select
user_id
,start_date
,DENSE_RANK() OVER (PARTITION BY user_id ORDER BY start_date) as seq
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date(a.start_time) as start_date
from song c
join listen_rcd aon a.song_id = c.song_id
group by a.user_id
,date(a.start_time)
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
start_date - INTERVAL seq DAY AS mark,
COUNT(*) as mark_cnt
from
(
select
user_id
,start_date
,DENSE_RANK() OVER (PARTITION BY user_id ORDER BY start_date) as seq
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
group by 1,2
)
,main as(
select
a.user_id
,date(a.start_time) as start_date
from song c
join listen_rcd aon a.song_id = c.song_id
group by a.user_id
,date(a.start_time)
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
start_date - INTERVAL seq DAY AS mark,
COUNT(*) as mark_cnt
from
(
select
user_id
,start_date
,DENSE_RANK() OVER (PARTITION BY user_id ORDER BY start_date) as seq
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with main as (
select
c.user_id
,date(c.start_time) as start_date
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
join listen_rcd con b.song_id = c.song_id
where a.singer_id in (1,2,3,4,6)
group by 1,2
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
start_date - INTERVAL seq DAY AS mark,
COUNT(*) as mark_cnt
from
(
select
user_id
,start_date
,DENSE_RANK() OVER (PARTITION BY user_id ORDER BY start_date) as seq
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6) and b.origin_singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
from song c
join listen_rcd aon a.song_id = c.song_id
group by a.user_id
,date_format(a.start_time,'%Y-%m-%d')
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
from song c
join listen_rcd aon a.song_id = c.song_id
group by a.user_id
,date_format(a.start_time,'%Y-%m-%d')
)
select
user_id,
max(mark_cnt) max_consecutive_days
from
(
select
user_id,
mark,
row_number()over(partition by user_id,mark)as mark_cnt
from
(
select
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
from song c
join listen_rcd aon a.song_id = c.song_id
group by a.user_id
,date_format(a.start_time,'%Y-%m-%d')
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
from listen_rcd a
join song c on a.song_id = c.song_id
group by a.user_id
,date_format(a.start_time,'%Y-%m-%d')
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
group by a.user_id
,date_format(a.start_time,'%Y-%m-%d')
,a.song_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,dense_rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (dense_rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,7)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,5,7)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,5,6,7)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,5,6)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,5)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id
with song as (
select
a.singer_id
,a.singer_name
,b.song_id
from singer_info a join song_info b
on a.singer_id = b.origin_singer_id
where a.singer_id in (1,2,3,4,6,7)
)
,main as(
select distinct
a.user_id
,date_format(a.start_time,'%Y-%m-%d') as start_date
,a.song_id
from listen_rcd a
join song c on a.song_id = c.song_id
join qqmusic_user_info b
on a.user_id = b.user_id
)
select
user_id
,max(mark_cnt) asmax_consecutive_days
from
(
select
user_id,
mark,
count(distinct start_date) as mark_cnt
from
(
select distinct
user_id
,start_date
,rank()over(partition by user_id order by start_date) as r_num
,date_sub(start_date,interval (rank()over(partition by user_id order by start_date)) day) as mark
from main
)main_2
group by user_id,mark
)main_3
group by user_id