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

这篇具有很好参考价值的文章主要介绍了数据分析师 ---- SQL强化(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

写在前面

最近在找工作中发现,数据分析师的笔试多数会涉及SQL,但是笔试中SQL的难度和我们在学习中和平常遇到的不是一个层次,笔试中的问题更加的贴近业务,对于应届生来说还是比较有难度的(也可能是我太菜)。
这个SQL专栏会记录自己在面试或者在刷题中遇到比较有价值的题目,希望能够帮助大家,也希望大家多多点赞和关注。

题目

请用一句SQL取出所有用户对商品的行为特征,特征分为已购买、购买未收藏、收藏未购买、收藏且购买

订单表:orders
数据分析师 ---- SQL强化(1)
收藏表:favorites
数据分析师 ---- SQL强化(1)
最后输出:
数据分析师 ---- SQL强化(1)

题意分析:
通过题目我们可以很清楚的知道这是一个多表连接的问题,连接两个表之后根据字段的内容进行判断
关于多表查询涉及的知识点
数据分析师 ---- SQL强化(1)

第一步:表连接以及表拼接

通过对题目的分析我们能够发现这是一个两个表全连接的问题,在Oracle数据库中可以直接进行全连接,但是在MySQL数据库则不支持全连接,我们可以考虑将两个查询的内容进行拼接union all关键字

	select o.user_id, o.item_id,o.pay_time,f.fav_time
	from orders o left join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	UNION ALL
	select f.user_id, f.item_id,o.pay_time,f.fav_time
	from orders o right join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	where o.user_id is null

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

解释拼接全连接代码中采用了左外连接和右内连接进行,因为这样查询的数据不会重复,直接使用union all进行合并
从优化的角度看使用union all 的效率会比union的效率高

第二步:新建列以及填充值

通过上表的查询我们能够发现可以根据付款的时间以及收藏的时间进行判断用户的购买和收藏情况

使用case when 进行区分

select distinct user_id,item_id,
case when pay_time is not null then 1 else 0 end '已购买',
case when pay_time is not null  and fav_time is null then 1 else 0 end '购买未收藏',
case when pay_time is null  and fav_time is not null then 1 else 0 end '收藏未购买',
case when pay_time is not null and fav_time is null then 1 else 0 end '收藏且购买'
from (
	select o.user_id, o.item_id,o.pay_time,f.fav_time
	from orders o left join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	UNION ALL
	select f.user_id, f.item_id,o.pay_time,f.fav_time
	from orders o right join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	where o.user_id is null
) tmp
order by user_id, item_id;

同样也可以只用if进行判断

select distinct user_id,item_id,
if(pay_time,1,0) '已购买',
if(pay_time is not null  and fav_time is null,1,0) '购买未收藏',
if(pay_time is null  and fav_time is not null,1,0) '收藏未购买',
if(pay_time is not null and fav_time is null,1,0) '收藏且购买'
from (
	select o.user_id, o.item_id,o.pay_time,f.fav_time
	from orders o left join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	UNION ALL
	select f.user_id, f.item_id,o.pay_time,f.fav_time
	from orders o right join favorites f 
	on o.user_id = f.user_id and o.item_id = f.item_id
	where o.user_id is null
) tmp
order by user_id, item_id;

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

总结

这道题主要考察了多表查询,全外连接,union,union all,case when, 难点就是一开始不知道如何下手,不知道怎么将两个表的数据结合起来,也不知道怎么新增列,还可能只知道处理一个表中的数据。
其实在遇见这种题目的时候我们可以一步一步来,将问题拆解,先将两个表关联起来,后面在根据字段的情况在进行新增列。
数据分析师 ---- SQL强化(1)文章来源地址https://www.toymoban.com/news/detail-420388.html

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2023年04月23日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包