【字节跳动】统计近 30 天创作者发文表现 Top 5
JOIN 连接聚合函数日期函数用户行为分析面试真题
题目描述
来源:字节跳动 SQL 面试真题
某内容社区需要生成“创作者近 30 天发文表现”周会看板。基于作者表与帖子表,计算每位作者近 30 天的发文数、总点赞数和平均点赞数,并输出表现最好的 5 名作者。
数据表
author 作者信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| author_id | INT | 作者编号,主键 |
| author_name | VARCHAR(64) | 作者名称 |
| joined_at | DATE | 加入日期 |
post 帖子表
| 字段 | 类型 | 说明 |
|---|---|---|
| post_id | BIGINT | 帖子编号,主键 |
| author_id | INT | 作者编号 |
| title | VARCHAR(255) | 帖子标题 |
| like_cnt | INT | 点赞数,非负 |
| publish_ts | DATETIME | 发布时间 |
题目要求
以 post 表中最新一条帖子的发布日期作为基准日,统计基准日前 29 天至基准日共 30 个自然日内的发文表现。
对每位作者计算:
posts_30d:近 30 天发文数。likes_30d:近 30 天总点赞数。avg_likes_30d:likes_30d / posts_30d,四舍五入保留 2 位小数;发文数为 0 时记为 0.00。
只输出近 30 天发文数大于 0 的作者,按 likes_30d 降序、posts_30d 降序、author_id 升序排列,取前 5 名。
输出字段为 author_id、author_name、posts_30d、likes_30d、avg_likes_30d。
数据样例
| author_idPKINT | author_nameVARCHAR(64) | joined_atDATE |
|---|---|---|
| 1 | Alice | 2023-01-10 |
| 2 | Bob | 2023-02-15 |
| 3 | Carol | 2024-01-20 |
| 4 | David | 2024-03-01 |
| 5 | Eve | 2024-05-12 |
| 6 | Frank | 2025-01-08 |
| 7 | Grace | 2025-02-18 |
输入数据显示 7 / 7 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里