数据分析师 ---- SQL强化(3)

这篇具有很好参考价值的文章主要介绍了数据分析师 ---- 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
数据分析师 ---- SQL强化(3)
表:song_info
数据分析师 ---- SQL强化(3)
表:user_info
数据分析师 ---- SQL强化(3)

题目解析:

关于这样的题我们需要找出需要使用的数据,然后再一步一步的解决问题

多表关联:找出每个月周杰伦每一首歌的的播放量

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_pv
	FROM (
			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
		) tmp
	) tmp2

返回排名前3的数据:使用where筛选条件

完整答案

SELECT *  
FROM (
		SELECT `month`,
		ROW_NUMBER() over(PARTITION BY month ORDER BY play_pv DESC) ranking,
		song_name,
		play_pv
		FROM (
				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
			) tmp
		) tmp2
where ranking<4
ORDER BY `month`,ranking

答案结果:
数据分析师 ---- SQL强化(3)

注:这里面有一个’播放次数相同,排名先后由两者的song_id先后顺序决定‘这个问题我暂时没有什么好的解决方案,如果你们有好的解决方案可以分享出来。文章来源地址https://www.toymoban.com/news/detail-439380.html

到了这里,关于数据分析师 ---- SQL强化(3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据分析案例-数据分析师岗位招聘信息可视化

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 ​编辑 1.数据集介绍 2.实验工具 3.实验过程 3.1加载数据 3.2数据预处理 3.3数据可视化

    2024年02月16日
    浏览(52)
  • (CDA数据分析师学习笔记)第五章多维数据透视分析一

    商业智能报表:BI报表。 ETL: 全称 Extract-Transform-Load ,即提取(extract)、转换(transform)、加载(load)。 E 是第一步对源数据进行抽取,源数据主要来源于业务系统、文件数据、第三方数据。T是第二步,对数据进行适当处理,目的是为了下一步的加载。主要是筛选(有价值

    2024年04月11日
    浏览(42)
  • 大数据可视化分析建模:每个人都是数据分析师

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 大数据可视化和数据分析已经成为现代社会中不可或缺的工具,不仅在商业领域,

    2024年02月06日
    浏览(47)
  • 【数据分析师求职面试指南】实战技能部分

    内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第五章数据分析师实战技能 其他内容: 【数据分析师求职面试指南】必备基础知识整理 【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法 【数据分析师求职面试指南】实战技能部分 基于历史数据和

    2023年04月12日
    浏览(42)
  • 人人都是数据分析师-数据分析之数据图表可视化(上)

      BI报表、运营同学的汇报报告中数据图表大多为 表格、折线图、柱状图和饼图,但是实际上还有很多具有代表性的可视化图表,因此将对常见的可视化图表进行介绍,希望这些图表可视化方法能够更好的提供数据的可用性。 数据是我们在数据分析工作中最坚实的朋友,但是

    2023年04月10日
    浏览(39)
  • 阿里云大数据分析师(ACP)认证,该如何备考?

    阿里云认证是基于核心技术及岗位的权威认证, 阿里云针对不同产品类别、用户成长阶段、生态岗位,精心打造不同的认证考试。 个人:证明您在对应技术领域的专业度,能够基于阿里云产品解决实际问题。获得更多阿里云生态下的就业机会。 公司:通过阿里云认证培养、

    2023年04月09日
    浏览(60)
  • 数据分析师初级—中级—高级,每个阶段都需要学习什么?

    先你需要看下这张图,这是一张数据分析师能力体系图: 通过图片,我们可以比较清晰的看到这三个阶段的数据分析师在各方面能力的差别了,那下面我们就来具体侃侃他们的区别。 初级水平 什么是初学者?如果解析学和数据科学对你来说是全新的领域,你也不知该行业的

    2024年02月10日
    浏览(47)
  • 数据分析师在人工智能与机器学习领域的重要作用

    人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)是当今最热门的技术领域之一,它们正在驱动我们进入第四次工业革命。这些技术正在改变我们的生活方式、工作方式和社会结构。数据分析师在这个领域的作用非常重要,因为他们是在这个领域中的核心组成部分。

    2024年02月19日
    浏览(44)
  • 大数据工程师、数据挖掘师和数据分析师有啥区别

    随着互联网技术的不断提升,数据已经成为各大企业新的战场,而对于从业者来说,如果你对数据科学领域的工作感兴趣的话,肯定首先要了解一下数据科学领域都有哪些岗位。从岗位性质和主要工作内容不同我们可以把数据科学的岗位大概分为四类:数据产品经理、大数据

    2023年04月22日
    浏览(44)
  • [架构之路-174]-《软考-系统分析师》-5-数据库系统-7-数据仓库技术与数据挖掘技术

    数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。近年来,人们对数据仓库技术的关注程度越来越尚,其原因是过去的几十年中 ,建设了无数的应用系统,积累了大量的数据,但这些数据没有得到很好的利用,有时反而成为企

    2023年04月23日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包