数据分析师 ---- SQL强化(3)
数据分析师 ---- SQL强化(3)
题目:每个月Top3的周杰伦歌曲
从听歌流水中找到18-25岁用户在2022年每个月播放次数top 3的周杰伦的歌曲
输入例子:
drop table if exists play_log;
create table `play_log` (`fdate` date,`user_id` int,`song_id` int
);
insert into play_log(fdate, user_id, song_id)
values
('2022-01-08', 10000, 0),
('2022-01-16', 10000, 0),
('2022-01-20', 10000, 0),
('2022-01-25', 10000, 0),
('2022-01-02', 10000, 1),
('2022-01-12', 10000, 1),
('2022-01-13', 10000, 1),
('2022-01-14', 10000, 1),
('2022-01-10', 10000, 2),
('2022-01-11', 10000, 3),
('2022-01-16', 10000, 3),
('2022-01-11', 10000, 4),
('2022-01-27', 10000, 4),
('2022-02-05', 10000, 0),
('2022-02-19', 10000, 0),
('2022-02-07', 10000, 1),
('2022-02-27', 10000, 2),
('2022-02-25', 10000, 3),
('2022-02-03', 10000, 4),
('2022-02-16', 10000, 4);drop table if exists song_info;
create table `song_info` (`song_id` int,`song_name` varchar(255),`singer_name` varchar(255)
);
insert into song_info(song_id, song_name, singer_name)
values
(0, '明明就', '周杰伦'),
(1, '说好的幸福呢', '周杰伦'),
(2, '江南', '林俊杰'),
(3, '大笨钟', '周杰伦'),
(4, '黑键', '林俊杰');drop table if exists user_info;
create table `user_info` (`user_id` int,`age` int
);
insert into user_info(user_id, age)
values
(10000, 18)
输出例子:
month|ranking|song_name|play_pv
1|1|明明就|4
1|2|说好的幸福呢|4
1|3|大笨钟|2
2|1|明明就|2
2|2|说好的幸福呢|1
2|3|大笨钟|1
例子说明:
1月被18-25岁用户播放次数最高的三首歌为“明明就”、“说好的幸福呢”、“大笨钟”,“明明就”和“说好的幸福呢”播放次数相同,排名先后由两者的song_id先后顺序决定。2月同理。
表:play_log
表:song_info
表:user_info
题目解析:
关于这样的题我们需要找出需要使用的数据,然后再一步一步的解决问题
多表关联:找出每个月周杰伦每一首歌的的播放量
SELECT MONTH(fdate) `month`,s.song_name,count(*) play_pv
FROM play_log p join user_info u
on p.user_id=u.user_id
JOIN (SELECT song_id,song_name FROM song_info where singer_name="周杰伦") s
on p.song_id = s.song_id
GROUP BY `month`,s.song_name
生成排名:根据每一首歌的播放量生成每个月中的播放量排名
使用的是窗口函数:ROW_NUMBER()
和 over()
SELECT `month`,ROW_NUMBER() over(PARTITION BY month ORDER BY play_pv DESC) ranking,song_name,play_pvFROM (SELECT MONTH(fdate) `month`,s.song_name,count(*) play_pvFROM play_log p join user_info uon p.user_id=u.user_id JOIN (SELECT song_id,song_name FROM song_info where singer_name="周杰伦") son p.song_id = s.song_idGROUP BY `month`,s.song_name) tmp) tmp2
返回排名前3的数据:使用where筛选条件
完整答案
SELECT *
FROM (SELECT `month`,ROW_NUMBER() over(PARTITION BY month ORDER BY play_pv DESC) ranking,song_name,play_pvFROM (SELECT MONTH(fdate) `month`,s.song_name,count(*) play_pvFROM play_log p join user_info uon p.user_id=u.user_id JOIN (SELECT song_id,song_name FROM song_info where singer_name="周杰伦") son p.song_id = s.song_idGROUP BY `month`,s.song_name) tmp) tmp2
where ranking<4
ORDER BY `month`,ranking
答案结果:
注:这里面有一个’播放次数相同,排名先后由两者的song_id先后顺序决定‘这个问题我暂时没有什么好的解决方案,如果你们有好的解决方案可以分享出来。
数据分析师 ---- SQL强化(3)相关推荐
- mysql数据生产数据分析_基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程...
基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程 课程目录 (1)SQL与数Ju分析;目录中文件数:23个 (1) 开课-课时3SQL与数Ju库的价值.flv (2) ...
- 数据分析师要求mysql的_做数据分析师sql需要掌握到什么程度
SQL是数据分析师必备的技能,那SQL究竟需要掌握到什么程度呢?这篇文章主要分享一下作为数据分析师SQL的学习路线. 很多人喜欢一上来就推荐好几本书,但是这些书晦涩难懂,对于初学者入门非常不友好.入门 ...
- 33个必须知道的数据分析师SQL面试问题和答案
33个必须知道的数据分析师SQL面试问题和答案 SQL是一种强大的编程语言,被广泛用于管理和分析数据.如果你想成为一名数据分析师,或者是正在寻找新工作的现有分析师,准备好回答SQL面试问题是很重要的. ...
- 数据分析师-SQL笔试题-做透这道题就够了
笔者在求职数据分析师岗位时,在知乎上看到了一道非常经典的SQL题,问题来源: link.笔者认为彻底的搞懂这道题以及涉及的知识点,能够通过绝大部分数据分析岗位的SQL笔试.下面是这道题的问题及解答,答 ...
- sql 找到上一次_干货 | 想成为商业分析师/数据分析师, SQL竟成硬门槛?
最近在知乎上看到一个帖子说"Excel与SQL相比 就是计算器与计算机的区别"过气网红Excel表示习惯了 ♀️ 不过SQL作为数据库查询和程序设计语言确实被很多名企写在了JD里 ...
- CDA数据分析师 - SQL数据库基础 查询连接
SQL 查询 [应用] 查询单表语句 select语句.from 语句.where 语句.group by 语句.having 语句.order by 语句.limit语句&子查询等 聚合函数 ...
- CDA数据分析师 - SQL数据库基础 数据类型表操作语句
SQL 基础概念 [领会] 关系型数据库基本概念 表的基本概念(字段.记录) 表的约束条件(主键.外键.非空.唯一.自增.默认值) 实体关系图(E-R 图) ANSI-SQL 以及不同的数据库实现的关 ...
- sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...
- 数据分析sql面试必会6题经典_数据分析师SQL面试必备50题
以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...
最新文章
- CentOS 6.5 PYPI本地源制作
- 【转】Android 之最新最全的Intent传递数据方法
- 自学python接单_Python接私活,兼职也可以月薪过万,会技术就可走遍天下
- 从程序详解拒绝服务***
- 动手开始创建第一个 Angular 应用并通过 gh-pages 发布到 Github 上
- Java中StringBuilder的清空方法比較
- 做实体行业现在难吗?
- Vue之路由push
- WinPmem:跨平台内存采集工具
- 国产银河麒麟 安装wps 的简单方法
- 开源VOSK引擎免费语音转文字部署
- RISV-Reader小结
- 【WPS技能】xlsx表格根据单元格的值改变行背景色
- docker swarm 官方文档
- 编程数学课:万万没想到,他们都用这个方式学好了数学
- Flutter 仿网易云音乐App
- 【踩坑专栏】required a bean of type ‘xxx.UserConverter‘ that could not be found
- Java完全自学教程
- Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片
- ❤️一文掌握HTML+CSS+JS开发小说阅读器❤️