排名

用户解题统计

过去一年提交了

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

收藏

收藏日期 题目名称 解决状态
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类)  已解决
2025-10-18 统计每个作者发布视频的平均互动指数  已解决
2025-10-17 专注力强的总用户数  已解决
2025-10-16 超过3个标签的视频  已解决
2025-10-16 给商品打四类标签(列)  已解决
2025-10-16 给商品打四类标签(行)  已解决
2025-10-16 只被收藏未被购买的商品  已解决
2025-10-16 好友步数排名-考虑反向好友关系  已解决
2025-10-16 窗口函数(7)三天吃四餐,你特么是不是乔杉?  未解决
2025-10-16 窗口函数(6)隔三差五去召妓,统计间隔用偏移  已解决
2025-10-16 窗口函数(5)越来越喜欢召妓,窗口函数用累计(3)  已解决
2025-10-16 窗口函数(4)越来越喜欢召妓,窗口函数用累计(2)  已解决
2025-10-16 窗口函数(3)越来越喜欢召妓,窗口函数用累计(1)  已解决
2025-10-16 窗口函数(2)所有前一和每类前一,继续搞懂排序窗口函数  已解决
2025-10-15 窗口函数(1)年度前三和每月前三,搞懂排序窗口函数  已解决
2025-10-14 字符串与通配符(2)好多关键词做规则,可以使用rlike  已解决
2025-10-11 通勤、午休、临睡个时间段活跃人数分布  已解决
2025-10-11 上月活跃用户数  已解决
2025-10-11 一线城市历年平均气温  已解决
2025-10-11 冬季下雪天数  已解决
2025-10-11 滴滴面试真题(2)打车订单呼叫应答时间  已解决
2025-10-09 HAVING-语数英优异的学生  已解决
2025-10-09 GROUP BY-年龄最大学生的出生日期  已解决
2025-10-09 HAVING-执教教师超过3人的科目  已解决
2025-10-09 多云天气天数  已解决
2025-10-09 文科潜力股  已解决
2025-10-09 德州扑克起手牌-最强起手牌KK+  已解决

评论笔记

评论日期 题目名称 评论内容 站长评论
没有评论过的题目。

提交记录

提交日期 题目名称 提交代码
2025-10-18 统计每个作者发布的AI配音视频数量 
SELECT 
    author_id,
    COUNT(*) AS ai_video_count
FROM ks_video_inf
WHERE if_AI_talking = 1
GROUP BY author_id
ORDER BY author_id;
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类) 
WITH VideoCompletion AS (
    SELECT 
        v.video_id,
        v.screen_type,
        v.if_AI_talking,
        v.if_hint,
        COUNT(DISTINCT CASE WHEN TIMESTAMPDIFF(SECOND, u.start_time, u.end_time) >= v.duration THEN u.uid END) AS completed_views,
        COUNT(DISTINCT u.uid) AS total_views
    FROM 
        ks_video_inf v
    JOIN 
        ks_video_wat_log u ON v.video_id = u.video_id
    WHERE 
        u.start_time >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
    GROUP BY 
        v.video_id, v.screen_type, v.if_AI_talking, v.if_hint
),
PivotTable AS (
    SELECT 
        screen_type,
        SUM(CASE WHEN if_AI_talking = 1 AND if_hint = 1 THEN completed_views ELSE 0 END) / NULLIF(SUM(CASE WHEN if_AI_talking = 1 AND if_hint = 1 THEN total_views ELSE 0 END), 0) * 100 AS AI_with_hint,
        SUM(CASE WHEN if_AI_talking = 1 AND if_hint = 0 THEN completed_views ELSE 0 END) / NULLIF(SUM(CASE WHEN if_AI_talking = 1 AND if_hint = 0 THEN total_views ELSE 0 END), 0) * 100 AS AI_no_hint,
        SUM(CASE WHEN if_AI_talking = 0 AND if_hint = 1 THEN completed_views ELSE 0 END) / NULLIF(SUM(CASE WHEN if_AI_talking = 0 AND if_hint = 1 THEN total_views ELSE 0 END), 0) * 100 AS no_AI_with_hint,
        SUM(CASE WHEN if_AI_talking = 0 AND if_hint = 0 THEN completed_views ELSE 0 END) / NULLIF(SUM(CASE WHEN if_AI_talking = 0 AND if_hint = 0 THEN total_views ELSE 0 END), 0) * 100 AS no_AI_no_hint
    FROM 
        VideoCompletion
    GROUP BY 
        screen_type
)
SELECT 
    screen_type,
    ROUND(AI_with_hint, 2) AS AI_with_hint,
    ROUND(AI_no_hint, 2) AS AI_no_hint,
    ROUND(no_AI_with_hint, 2) AS no_AI_with_hint,
    ROUND(no_AI_no_hint, 2) AS no_AI_no_hint
FROM 
    PivotTable;
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类) 
WITH a AS(SELECT
i.screen_type,
i.if_hint,
i.if_AI_talking,
CAST(COUNT(DISTINCT CASE WHEN timestampdiff(SECOND, w.start_time, w.end_time) > i.duration THEN w.uid END) / COUNT(DISTINCT w.uid) * 100 AS DECIMAL(10,2)) AS rate
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
WHERE w.start_time >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
GROUP BY
i.screen_type,
i.if_hint,
i.if_AI_talking),
f_a AS(SELECT screen_type,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 1 THEN rate END) AS AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 1 THEN rate END) AS AI_no_hint,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 0 THEN rate END) AS no_AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 0 THEN rate END) AS no_AI_no_hint
FROM a
GROUP BY screen_type)
SELECT screen_type, AI_with_hint,AI_no_hint, no_AI_with_hint, no_AI_no_hint
FROM f_a
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类) 
WITH a AS(SELECT
i.screen_type,
i.if_hint,
i.if_AI_talking,
CAST(COUNT(DISTINCT CASE WHEN timestampdiff(SECOND, w.start_time, w.end_time) > i.duration THEN w.uid END) / COUNT(DISTINCT w.uid) * 100 AS DECIMAL(10,2)) AS rate
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BY
i.screen_type,
i.if_hint,
i.if_AI_talking),
f_a AS(SELECT screen_type,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 1 THEN rate END) AS AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 1 THEN rate END) AS AI_no_hint,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 0 THEN rate END) AS no_AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 0 THEN rate END) AS no_AI_no_hint
FROM a
GROUP BY screen_type)
SELECT screen_type, AI_with_hint,AI_no_hint, no_AI_with_hint, no_AI_no_hint
FROM f_a
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类) 
WITH a AS(SELECT
i.screen_type,
i.if_hint,
i.if_AI_talking,
CAST(COUNT(DISTINCT CASE WHEN timestampdiff(SECOND, w.start_time, w.end_time) > i.duration THEN w.uid END) / COUNT(DISTINCT w.uid) AS DECIMAL(10,2)) AS rate
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BY
i.screen_type,
i.if_hint,
i.if_AI_talking),
f_a AS(SELECT screen_type,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 1 THEN rate END) AS AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 1 THEN rate END) AS AI_no_hint,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 0 THEN rate END) AS no_AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 0 THEN rate END) AS no_AI_no_hint
FROM a
GROUP BY screen_type)
SELECT screen_type, AI_with_hint,AI_no_hint, no_AI_with_hint, no_AI_no_hint
FROM f_a
2025-10-18 横屏与竖屏视频的完播率(按AI配音和字幕分类) 
WITH a AS(SELECT
i.screen_type,
i.if_hint,
i.if_AI_talking,
COUNT(DISTINCT CASE WHEN timestampdiff(SECOND, w.start_time, w.end_time) > i.duration THEN w.uid END) / COUNT(DISTINCT w.uid) AS rate
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BY
i.screen_type,
i.if_hint,
i.if_AI_talking),
f_a AS(SELECT screen_type,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 1 THEN rate END) AS AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 1 THEN rate END) AS AI_no_hint,
 MAX(CASE WHEN if_hint = 1 AND if_AI_talking = 0 THEN rate END) AS no_AI_with_hint,
 MAX(CASE WHEN if_hint = 0 AND if_AI_talking = 0 THEN rate END) AS no_AI_no_hint
FROM a
GROUP BY screen_type)
SELECT screen_type, AI_with_hint,AI_no_hint, no_AI_with_hint, no_AI_no_hint
FROM f_a
2025-10-18 计算每个用户的日均观看时间 
WITH daily_time AS(SELECT uid,
DATE(start_time),
SUM(CASE WHEN DATE(start_time) = DATE(end_time) THEN TIMESTAMPDIFF(SECOND, start_time, end_time)
WHEN DATE(start_time) < DATE(end_time) THEN TIMESTAMPDIFF(SECOND, TIME(start_time), '23:59:59') + TIMESTAMPDIFF(SECOND, '00:00:00', TIME(end_time))END) AS d_time
FROM ks_video_wat_log
GROUP BY uid,
DATE(start_time))
SELECT uid,CAST(AVG(d_time) AS DECIMAL(10, 0)) AS daily_avg_watch_time
FROM daily_time
GROUP BY uid
ORDER BY daily_avg_watch_time DESC
LIMIT 5
2025-10-18 计算每个用户的日均观看时间 
WITH daily_time AS(SELECT uid,
DATE(start_time),
SUM(CASE WHEN DATE(start_time) = DATE(end_time) THEN TIMESTAMPDIFF(SECOND, start_time, end_time)
WHEN DATE(start_time) < DATE(end_time) THEN TIMESTAMPDIFF(SECOND, TIME(start_time), '23:59:59') + TIMESTAMPDIFF(SECOND, '00:00:00', TIME(end_time))END) AS d_time
FROM ks_video_wat_log
GROUP BY uid,
DATE(start_time))
SELECT uid,CAST(AVG(d_time) AS DECIMAL(10, 0)) AS daily_avg_watch_time
FROM daily_time
GROUP BY uid
ORDER BY daily_avg_watch_time DESC
2025-10-18 计算每个用户的日均观看时间 
WITH daily_time AS(SELECT uid,
DATE(start_time),
SUM(CASE WHEN DATE(start_time) = DATE(end_time) THEN TIMESTAMPDIFF(SECOND, start_time, end_time)
WHEN DATE(start_time) < DATE(end_time) THEN TIMESTAMPDIFF(SECOND, TIME(start_time), '23:59:59') + TIMESTAMPDIFF(SECOND, '00:00:00', TIME(end_time))END) AS d_time
FROM ks_video_wat_log
GROUP BY uid,
DATE(start_time))
SELECT uid,CAST(AVG(d_time) AS DECIMAL(10,2)) AS daily_avg_watch_time
FROM daily_time
GROUP BY uid
ORDER BY daily_avg_watch_time DESC
2025-10-18 统计每个作者发布视频的平均互动指数 
WITH filtered AS(SELECT
 i.author_id,
SUM(w.if_like + w.if_retweet + w.if_fav) AS ax,
COUNT(w.comment_id) AS bx,
COUNT(DISTINCT i.video_id) AS nx
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BYi.author_id)
SELECT author_id,
CAST((ax + bx) / nx AS DECIMAL(10,2)) AS avg_interaction_index
FROM filtered
ORDER BY avg_interaction_index DESC
2025-10-17 计算视频的平均观看完成率 
SELECT 
    v.video_id,
    v.title,
    COALESCE(AVG(TIMESTAMPDIFF(SECOND, w.start_time, w.end_time) / v.duration), 0) AS avg_completion_rate
FROM ks_video_inf v
inner JOIN ks_video_wat_log w ON v.video_id = w.video_id
GROUP BY v.video_id, v.title
ORDER BY avg_completion_rate DESC;
2025-10-17 找出最近一周内发布的竖屏视频 
SELECT video_id,
author_id,
title
FROM ks_video_inf
WHERE release_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
AND screen_type = 'p'
ORDER BY release_time DESC
2025-10-17 找出最近一周内发布的竖屏视频 
SELECT video_id,
author_id,
title
FROM ks_video_inf
WHERE release_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
AND screen_type = 'p'
ORDER BY release_time DESC
2025-10-17 统计每个视频的点赞数 
SELECT i.video_id, i.title,
SUM(w.if_like) AS like_count
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BY i.video_id, i.title
ORDER BY like_count DESC
2025-10-17 统计每个视频的点赞数 
SELECT i.video_id, i.title,
COUNT(w.if_like) AS like_count
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
GROUP BY i.video_id, i.title
ORDER BY like_count DESC
2025-10-17 计算用户观看视频的平均时长 
SELECT uid,
AVG(TIMESTAMPDIFF(SECOND, start_time, end_time)) AS avg_watch_duration
FROM ks_video_wat_log
GROUP BY uid
ORDER BY avg_watch_duration desc
2025-10-17 专注力强的总用户数 
WITH selected_uid AS(SELECT w.uid
FROM ks_video_wat_log w
JOIN ks_video_inf i ON w.video_id = i.video_id
WHERE i.release_time >= DATE_SUB(now(), INTERVAL 1 MONTH)
AND i.duration >= 180
AND (timestampdiff(second, w.start_time, w.end_time) - i.duration) >= 0
GROUP BY w.uid
HAVING COUNT(DISTINCT w.video_id) >= 2)
SELECT COUNT(DISTINCT uid) AS total_users
FROM selected_uid
2025-10-17 专注力强的总用户数 
SELECT DISTINCT CASE WHEN timestampdiff(second, w.start_time, w.end_time) - i.duration >= 0 AND i.duration >= 180 THEN w.uid END
FROM ks_video_wat_log w
JOIN ks_video_inf i ON w.video_id = i.video_id
WHERE i.release_time >= DATE_SUB(now(), INTERVAL 1 MONTH)
2025-10-17 计算完播率(按人数) 
SELECT i.video_id,
i.title,
ROUND(COUNT(DISTINCT CASE WHEN TIMESTAMPDIFF(SECOND, w.start_time, w.end_time) - i.duration >= 0 THEN uid END)/COUNT(distinct uid) * 100, 4) AS completion_rate
FROM ks_video_inf i
JOIN ks_video_wat_log w ON i.video_id = w.video_id
WHERE i.release_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
GROUP BY i.video_id, i.title
ORDER BY completion_rate desc
LIMIT 5
2025-10-17 计算完播率(按次数) 
SELECT i.video_id,
i.title,
CAST(SUM(CASE WHEN(TIMESTAMPDIFF(SECOND, w.start_time, w.end_time) - i.duration) >= 0 THEN 1 ELSE 0 END)/ COUNT(*) *100 AS DECIMAL(10,2)) AS completion_rate
FROM ks_video_wat_log w
JOIN ks_video_inf i ON w.video_id = i.video_id
WHERE i.release_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
GROUP BY i.video_id, i.title
ORDER BY completion_rate desc
LIMIT 5