来源:雪球App,作者: 猴子数据分析,(https://xueqiu.com/1350621016/159703178)

因为后面要分析“每种类型用户的总交易金额”,所以保留左表(用户交易记录表)中的全部用户数据。

【题目】

某商场为了分析用户购买渠道。表1是用户交易记录表,记录了用户id、交易日期、交易类型和交易金额。

表2是用户类型表,记录了用户支付类型(微信、支付宝、信用卡等),分别有type1、type2。

要求:

1.请在 type1的用户类型中,找出总交易金额最大的用户。

2.筛选每个用户的第2笔交易记录。

3.如下表:如何实现表3的数据格式?

4.两表做关联时,其中一张表的关联键有大量的null值会造成什么影响?如何规避?

【解题思路】

1.type1的用户类型中,找出单用户的总交易金额最大的一位用户?

我们先来把这个业务需求翻译成大白话:

1)表中的字段要有用户类型、交易金额、用户id

交易金额、用户id在用户交易记录表中,用户类型在用户类型表中,涉及到两个表的字段,所以需要进行多表联结。

观察两个表,得知两表的相同字段为用户id ,所以通过用户id联结两张表。

使用哪种联结呢?拿出《猴子 从零学会SQL》里面的多表联结图。

因为后面要分析“每种类型用户的总交易金额”,所以保留左表(用户交易记录表)中的全部用户数据。

查询结果:

2)每种类型用户的总交易金额

当有“每个”出现的时候,要想到《猴子 从零学会SQL》中讲过的用分组汇总来实现该业务问题。

根据各用户类型、用户id分组 (group by),统计每个用户数总费用(求和函数sum)

查询结果:

3)找出用户类型=type1,总交易金额最大的用户

用where 筛选用户类型=type1的用户,按照总金额降序排序(order by decs),找出的第一行(limit 1)记录即为交易金额最大的用户。

查询结果:

2.筛选每个用户的第2笔交易记录?

1)题目要求查询“每个用户”,当每个出现的时候,就要想到分组汇总(group by或者窗口函数的partiotion  by)。

2)第2笔交易记录,是指按照交易时间对每个用户的交易记录进行排名,然后取出排名第2的数据。

又涉及到分组,又涉及到排名的问题,要想到用《猴子 从零学会SQL》里讲过的窗口函数来实现。

所以使用分组(窗口函数partiotion by 用户id),并按最后交易时间升序排列(order by交易时间 asc),套入窗口函数的语法,得出下面的sql语句:

查询结果:

2)用where 筛选出每个用户的第2条记录,就是每个用户的第2笔交易记录

查询结果:

3.如下表:如何实现表3的数据格式?

题目要求将同一用户、不用的交易时间和交易类型多行合并为一行,用group_concat函数可解决。

sql入下:

4.两表做关联时,其中一张表的关联键有大量的null值会造成什么影响?如何规避?

因为在关联表中的全部数据不一定在另一张表都匹配,这样没有匹配到的话就会出现null,避免出现表连接出现null值,只要在表关联时加一个where条件进行判断(not null ),具体见下图

【本题考点】

1.如何将复杂的业务问题,使用多维度拆解分析方法,翻译成大白话的能力。

2.遇到排名问题,要想到使用窗口函数来实现。

3.多表联结各个情况如何去实现?把上图看懂就可以解决99%的多表联结问题了。

sql查询当天交易总额最大的用户信息_如何分析交易记录? 因为后面要分析“每种类型用户的总交易金额”,所以保留左表(用户交易记录表)中的全部用户数据。 【题目】 某商场为了分析用... - 雪球...相关推荐

  1. sql查询当天交易总额最大的用户信息_京东用户行为数据分析(SQL)

    一. 项目背景 项目对京东零售集团的运营数据集进行指标分析,研究京东用户在购物过程中的行为习 惯,购物偏好,在购物过程中各个环节的转化和流失情况,为运营决策提供数据支撑. 二. 数据介绍 本数据集采用 ...

  2. Sql 查询当天、本周、本月记录

    --查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info wh ...

  3. jwt token 附加用户信息_获取jwt(json web token)中存储的用户信息

    一个JWT实际上就是一个字符串,它由三部分组成,头部(header).载荷(Payload)与签名. Payload payload中可以保存用户的信息. var claims = new Claim ...

  4. sql 两张表的相同字段中刷选出不同数据

    我们在业务逻辑中,经常会涉及两张表之间的数据比较, 其中涉及到某张表中独一份的数据,如下 1 两张表中相同字段name , 查询出在表a存在而表b中不存在的数据,并去重 方法一: SELECT DIS ...

  5. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...

    同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API. 在微信小程序中,我们往往需要获取用户的身份信息,比如昵称.头像.性别.地区等 ...

  6. vuex保存用户信息_你想要的,vuex干货分享

    欢迎每一位爱学习的同学,小郭将用一篇文章为大家梳理Vue.js 中 vuex 知识点.请大家准备,精彩内容向下看. Vuex 是什么? 先来看看官方解释: Vuex 是一个专为 Vue.js 应用程序 ...

  7. uniapp同步获取用户信息_表单设计是为了帮助用户获取信息,而不是填写

    之前有会员来信提到希望能够找一期时间聊一聊在应用中的表单设计,当时我爽快的答应了但却一直没有写. 其实没写的主要原因还是在于网络上已经有了很多关于表单设计的讨论,这些文章都提到了很多在表单设计中需要注 ...

  8. 叮叮获取所有用户信息_钉钉小程序获取用户信息

    1.钉钉小程序只允许开发办公类的程序,不能开发娱乐型的程序. 2.钉钉小程序审核需要产品说明书,最大大小不能超过30M(文档). 3.貌似可以用IP,暂时没有看到有关https的限制. (业务提供商( ...

  9. java扫描所有用户信息_监听器实现案例----自定义session扫描器和统计在线用户人数及用户信息...

    一.案例一:自定义Session扫描器 1.案例说明 当一个Web应用创建的Session很多时,为了避免Session占用太多的内存,我们可以选择手动将这些内存中的session销毁,那么此时也可以 ...

最新文章

  1. ChartPart 图表显示
  2. CTF(pwn)堆利用 之 off by one
  3. Vue中使用html2canvas和jspdf插件实现导出pdf(自定义html样式可带图片)并下载
  4. Visual Studio 2017 15.5预览版添加对F# Core及Standard的支持
  5. PLSQL Developer中数值字段由科学计数法改为普通数值显示
  6. minwindow java_Java经典算法:最小窗口子字符串
  7. TCP协议-相关面试题
  8. 【总结记录】面向对象设计OOP三大特性(封装、继承、多态)、七大基本原则的理解(结合代码、现实实例理解)
  9. nginx 监听同一端口
  10. 贪心 Codeforces Round #301 (Div. 2) B. School Marks
  11. js中如何把字符串转化为对象、数组示例代码
  12. Vue源码分析 - watcher.js
  13. 【Amaple教程】4. 组件
  14. 推荐好用的ssh远程连接 linux的工具
  15. windows-sys4:win10 预览体验计划不能选择版本渠道
  16. 关于文件的MIME类型
  17. 个税计算python版(2021最新版)
  18. java 图片去水印_如何用java去除图片水印?
  19. github contribbution 没记录怎么破?
  20. Adobe Acrobat XI Pro 2019安装教程

热门文章

  1. UFR II、PCL、PostScript打印机驱动区别
  2. 第二届金融交易技术大会拥抱Fin Tech-创新、科技、融合在沪圆满落幕!
  3. mysql autoenlist默认_Dapper MySql DateTime 异常
  4. 戴尔笔记本电脑怎下载c语言,戴尔笔记本电脑如何下载驱动
  5. 信息安全 SEED Lab10 Packet Sniffing and Spoofing Lab
  6. Java 基础 Collection集合
  7. 310569138 294609417 297440781 猪八戒上的骗子
  8. t480 拆触摸板_thinkpadt480 win10电脑触摸板键盘失效怎么修复
  9. ruoyi是怎么点击菜单跳转页面的_小猪短租怎么发布房源
  10. 计算机应用团队,【计算机应用论文】团队合作学习下计算机应用论文(共3025字)...