排名

用户解题统计

过去一年提交了

勋章 ①金银铜:在竞赛中获得第一二三名;②好习惯:自然月10天提交;③里程碑:解决1/2/5/10/20/50/100/200题;④每周打卡挑战:完成每周5题,每年1月1日清零。

收藏

收藏日期 题目名称 解决状态
2025-06-18 时间日期(4)阶段综合-按月统计日花费,一天都不要浪费  未解决

评论笔记

评论日期 题目名称 评论内容 站长评论
2025-06-16 多类别观看指数计算 
WITH user_category_counts AS (
    SELECT 
        t20.usr_id,
        COUNT(DISTINCT t3.v_typ) AS category_count
    FROM
        bilibili_t20 t20
    JOIN
        bilibili_t3 t3 ON t20.v_id = t3.v_id
    GROUP BY
        t20.usr_id
    HAVING
        COUNT(DISTINCT t3.v_typ) >= 3
),
video_total_viewers AS (
    SELECT
        t3.v_typ,
        COUNT(DISTINCT t20.usr_id) AS total_viewers
    FROM
        bilibili_t20 t20
    JOIN
        bilibili_t3 t3 ON t20.v_id = t3.v_id
    GROUP BY
        t3.v_typ
),
video_multi_viewers AS (
    SELECT
        t3.v_typ,
        COUNT(DISTINCT ucc.usr_id) AS multi_category_viewers
    FROM
        user_category_counts ucc
    JOIN
        bilibili_t20 t20 ON ucc.usr_id = t20.usr_id
    JOIN
        bilibili_t3 t3 ON t20.v_id = t3.v_id
    GROUP BY
        t3.v_typ
)
SELECT 
    vtv.v_typ,
    vmv.multi_category_viewers,
    vtv.total_viewers,
    ROUND((vmv.multi_category_viewers * 100.0 / vtv.total_viewers), 2) AS mcv_index
FROM
    video_total_viewers vtv
JOIN
    video_multi_viewers vmv ON vtv.v_typ = vmv.v_typ
ORDER BY
   mcv_index DESC;
啥也没说

提交记录

提交日期 题目名称 提交代码
2025-08-06 抖音面试真题(1)T+1日留存率 
with At AS
(select
usr_id,
date(login_time)aslogin_date
 from
 user_login_log
 where
datediff(current_date(),login_time) <=30
 )
 select
 At.login_date,
 concat(round(count(distinct Bt.usr_id)/count(distinct At.usr_id)*100,2),'%') AS USR_retention
from
At 
left join
At Bt on At.usr_id = Bt.usr_id
and
 datediff(Bt.login_date,At.login_date) = 1
group by
 At.login_date;
2025-08-06 抖音面试真题(1)T+1日留存率 
with At as (
select distinct usr_id,
 date(login_time) as login_date
from user_login_log
where datediff(curdate(), login_time) <= 30
)
select At.login_date,
 concat(round(count(distinct Bt.usr_id)/count(distinct At.usr_id)*100, 2), '%') as T1_retention_rate
from At
 left join At Bt on At.usr_id = Bt.usr_id
and datediff(Bt.login_date, At.login_date) = 1
group by At.login_date
2025-08-06 抖音面试真题(1)T+1日留存率 
select * from user_login_log limit 5;
2025-06-26 分类别人均在线时长最火直播间 
WITH LiveRoomStats AS (
    SELECT 
        t1.live_id,
        t2.live_nm,
        t2.live_type,
        SUM(TIMESTAMPDIFF(SECOND, t1.enter_time, t1.leave_time)) AS total_duration,
        COUNT(DISTINCT t1.usr_id) AS total_users
    FROM 
        ks_live_t1 t1
    JOIN 
        ks_live_t2 t2
    ON 
        t1.live_id = t2.live_id
    WHERE 
        t1.enter_time >= '2021-09-12 23:00:00' AND t1.enter_time < '2021-09-13 04:00:00'
    GROUP BY 
        t1.live_id, t2.live_nm, t2.live_type
),
AverageDuration AS (
    SELECT 
        live_id,
        live_nm,
        live_type,
        total_duration,
        total_users,
        total_duration / total_users AS avg_duration
    FROM 
        LiveRoomStats
),
RankedLiveRooms AS (
    SELECT 
        live_id,
        live_nm,
        live_type,
        total_duration,
        total_users,
        avg_duration,
        ROW_NUMBER() OVER (PARTITION BY live_type ORDER BY avg_duration DESC) AS rnk
    FROM 
        AverageDuration
)
SELECT 
    live_id,
    live_nm,
    live_type,
    total_duration,
    total_users,
    avg_duration
FROM 
    RankedLiveRooms
WHERE 
    rnk = 1
ORDER BY 
    live_id;
2025-06-26 分类别人均在线时长最火直播间 
WITH avg_time AS (
SELECT 
t1.live_id,
t2.live_nm,
t2.live_type,
avg(timestampdiff(SECOND, enter_time, leave_time)) AS averagetime,
ROW_NUMBER() OVER (PARTITION BY t2.live_type ORDER BY avg(timestampdiff(SECOND, enter_time, leave_time)) DESC) AS rk
FROM 
ks_live_t1 t1
JOIN 
ks_live_t2 t2 ON t1.live_id = t2.live_id
WHERE 
enter_time >= '2021-09-12 23:00:00'
AND leave_time <= '2021-09-13 03:59:59'
GROUP BY 
t1.live_id, t2.live_nm, t2.live_type
)
SELECT 
avg_time.live_id,
avg_time.live_nm,
avg_time.live_type
FROM 
avg_time
WHERE 
rk = 1;
2025-06-26 分类别的最火直播间 
WITH LiveRoomStats AS (
    SELECT 
        t1.live_id,
        t2.live_nm,
        t2.live_type,
        COUNT(*) AS enter_cnt,
        ROW_NUMBER() OVER (PARTITION BY t2.live_type ORDER BY COUNT(*) DESC) AS rnk
    FROM 
        ks_live_t1 t1
    JOIN 
        ks_live_t2 t2
    ON 
        t1.live_id = t2.live_id
    WHERE 
        DATE_FORMAT(t1.enter_time, '%Y-%m-%d %H') = '2021-09-12 23'
    GROUP BY 
        t1.live_id, t2.live_nm, t2.live_type
)
SELECT 
    live_id,
    live_nm,
    live_type,
    enter_cnt
FROM 
    LiveRoomStats
WHERE 
    rnk <= 1
ORDER BY 
    live_id;
2025-06-26 分类别的最火直播间 
SELECT 
t1.live_id, 
t2.live_nm, 
t2.live_type,
COUNT(usr_id) AS count_usr,
ROW_NUMBER() OVER(partition by t2.live_type ORDER BY COUNT(usr_id) DESC) AS rk
FROM ks_live_t1 t1 
JOIN ks_live_t2 t2 ON t1.live_id = t2.live_id
WHERE DATE_FORMAT(t1.enter_time, '%Y-%m-%d %H') = '2021-09-12 23'
GROUP BY t1.live_id, t2.live_nm, t2.live_type;
2025-06-26 分类别的最火直播间 
SELECT 
t1.live_id, 
t2.live_nm, 
t2.live_type,
COUNT(*) AS count_usr,
ROW_NUMBER() OVER(partition by t2.live_type ORDER BY COUNT(*) DESC) AS rk
FROM ks_live_t1 t1 
JOIN ks_live_t2 t2 ON t1.live_id = t2.live_id
WHERE DATE_FORMAT(t1.enter_time, '%Y-%m-%d %H') = '2021-09-12 23'
GROUP BY t1.live_id, t2.live_nm, t2.live_type;
2025-06-26 不分类别的最火直播间 
select t1.live_id, live_nm , count(usr_id) as count_usr
from ks_live_t1 t1 join ks_live_t2 t2 on t1.live_id = t2.live_id
where date_format(t1.enter_time , '%Y-%m-%d %H') = '2021-09-12 23'
group by t1.live_id , live_nm
order by count_usr desc
limit 5
2025-06-26 不分类别的最火直播间 
select t1.live_id, live_nm , count(usr_id) as count_usr
from ks_live_t1 t1 join ks_live_t2 t2 on t1.live_id = t2.live_id
where '2021-9-12 23:00:00' between enter_time and leave_time
group by t1.live_id , live_nm
order by count_usr desc
limit 5
2025-06-26 绘制小时进入人数曲线 
select lpad(hour(t1.enter_time), 2, '0') as hour_entered, count(usr_id) as enter_count
from ks_live_t1 t1join ks_live_t2 t2 on t1.live_id = t2.live_id
group by lpad(hour(t1.enter_time), 2, '0')
order by hour_entered asc
2025-06-26 绘制小时进入人数曲线 
select hour(t1.enter_time) as hour_entered , count(usr_id) as enter_count
from ks_live_t1 t1join ks_live_t2 t2 on t1.live_id = t2.live_id
group by hour(t1.enter_time)
order by hour_entered asc
2025-06-26 快手面试真题(1)同时在线人数 
select
 t1.live_id,live_nm,count(usr_id) as online_usr
from
 ks_live_t1 t1
join
 ks_live_t2 t2 on t1.live_id = t2.live_id
where
 '2021-9-12 23:48:38' between enter_time and leave_time
group by
 t1.live_id,live_nm
order by
 online_usr desc
2025-06-26 快手面试真题(1)同时在线人数 
select t1.live_id,live_nm ,count(usr_id)asonline_users
from ks_live_t1 t1
join ks_live_t2t2 on t1.live_id = t2.live_id
where enter_time<='2021-9-12 23:48:38' and (leave_time >='2021-9-12 23:48:38' or leave_time>'2021-9-13 00:00:00' )
group by live_id,live_nm
order by online_users desc
2025-06-26 快手面试真题(1)同时在线人数 
select t1.live_id,live_nm ,count(usr_id)asonline_users
from ks_live_t1 t1
join ks_live_t2t2 on t1.live_id = t2.live_id
where enter_time<'2021-9-12 23:48:38' and (leave_time >'2021-9-12 23:48:38' or leave_time>'2021-9-13 00:00:00' )
group by live_id,live_nm
order by online_users desc
2025-06-22 每年地产与软件服务上市公司对比 
select
 year(list_date) as year,
 sum((case when industry like '%地产' then 1 else 0 end)) as '地产',
 sum((case when industry = '软件服务' then 1 else 0 end)) as '软件服务'
from
stock_info
where
year(list_date) between 2000 and 2024
group by
year
2025-06-22 每年地产与软件服务上市公司对比 
select
 year(list_date) as year,
 sum((case when industry like '%地产' then 1 else null end)) as '地产',
 sum((case when industry = '软件服务' then 1 else null end)) as '软件服务'
from
stock_info
where
year(list_date) between 2000 and 2024
group by
year
2025-06-22 一线城市历年平均气温 
select year(dt) as Y
,cast(ifnull(avg(case when city='beijing' then tmp_h else null end), 0) as decimal(4,2)) as '北京'
,cast(ifnull(avg(case when city='shanghai' then tmp_h else null end), 0) as decimal(4,2)) as 上海
,cast(ifnull(avg(case when city='shenzhen' then tmp_h else null end), 0) as decimal(4,2)) as 深圳
,cast(ifnull(avg(case when city='guangzhou' then tmp_h else null end), 0) as decimal(4,2)) as 广州
from
weather_rcd_china
where 
year(dt) between 2011 and 2022
group by 
year(dt)
2025-06-22 一线城市历年平均气温 
with highest_tmp as
(
select
 year(dt) as y,
 (case when city = 'beijing' then tmp_h else null end) as bj_high,
 (case when city = 'shanghai' then tmp_h else null end) as sh_high,
 (case when city = 'guangzhou' then tmp_h else null end) as gz_high,
 (case when city = 'shenzhen' then tmp_h else null end) as sz_high
from
weather_rcd_china
where
 year(dt) between 2011 and 2022
)
select
y,
round(avg(bj_high),2) as bj,
round(avg(sh_high),2) as sh,
round(avg(gz_high),2) as gz,
round(avg(sz_high),2) as sz
from
highest_tmp
group by
 y
2025-06-18 时间日期(4)阶段综合-按月统计日花费,一天都不要浪费 
select 
	substr(trx_time,1,7) as trx_mon ,
	last_day(max(trx_time)) as last_day, 
day(last_day(max(trx_time)) ) as day_of_mon,
sum(trx_amt) as trx_amt, 
count(1) as trx_cnt,sum(trx_amt)/day(last_day(max(trx_time)) ) as avg_day_amt,
count(1)/day(last_day(max(trx_time)) ) as avg_day_cnt
from 
	cmb_usr_trx_rcd a
left join 
	cmb_mch_typ mon a.mch_nm = m.mch_nm
where 
a.usr_id=5201314520 
and ((YEAR(trx_time) = 2023) OR (YEAR(trx_time) = 2024 AND MONTH(trx_time) BETWEEN 1 AND 6))
and (m.mch_typ='休闲娱乐' or m.mch_typ is null)
and trx_amt > 288
and (TIME(trx_time) BETWEEN '23:00:00' AND '23:59:59'OR TIME(trx_time) BETWEEN '00:00:00' AND '03:00:00')
group by 
substr(a.trx_time,1,7)
order by 
 1