前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >没有窗口函数,你能很快做出这道MySQL面试题吗?

没有窗口函数,你能很快做出这道MySQL面试题吗?

作者头像
朱小五
发布于 2020-04-26 14:06:50
发布于 2020-04-26 14:06:50
78900
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

这是一个面试题目,相对难说有点难度,由于MySQL8.0以前没有“窗口函数”,当你碰到了这个题目,你是否能够很快写出这个答案来呢?

请使用上述数据,完成如下效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
建表语句
create table mianshi1 (
     id varchar(20),
     dates varchar(20),
     v_num int
) charset = utf8;

插入数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert into mianshi1 values
("A","2015-01",5),
("A","2015-01",15),
("B","2015-01",5),
("A","2015-01",8),
("B","2015-01",25),
("A","2015-01",5),
("A","2015-02",4),
("A","2015-02",6),
("B","2015-02",10),
("B","2015-02",5),
("A","2015-03",16),
("A","2015-03",22),
("B","2015-03",23),
("B","2015-03",10),
("B","2015-03",11);

数据如下

第一步:求出“当月访问次数”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
     id 用户,
     dates 月份,
     sum(v_num) 当月访问次数
from mianshi1
group by id,dates

结果如下

第二步:为了清楚讲解这个面试题,我们使用CTAS保存这个中间表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table zhongjian1 as
select 
     id 用户,
     dates 月份,
     sum(v_num) 当月访问次数
from mianshi1
group by id,dates

结果如下

第三步:求出“最大访问次数”(自关联)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
     b.用户 用户,
     b.月份 月份,
     max(a.当月访问次数) 最大访问次数,
     sum(a.当月访问次数) 总访问次数
from zhongjian1 a
join zhongjian1 b
on a.用户 = b.用户
where a.月份 <= b.月份
group by b.用户,b.月份;

结果如下

第四步:为了清楚讲解这个面试题,我们再次使用CTAS保存这个中间表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table zhongjian2 as
select 
     b.用户 用户,
     b.月份 月份,
     max(a.当月访问次数) 最大访问次数,
     sum(a.当月访问次数) 总访问次数
from zhongjian1 a
join zhongjian1 b
on a.用户 = b.用户
where a.月份 <= b.月份
group by b.用户,b.月份;

结果如下

第五步:将zhongjian1表和zhongjian2表,进行表合并,得到最终结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
     a.用户 用户,
     a.月份 月份,
     a.当月访问次数 当月访问次数,
     b.最大访问次数 最大访问次数,
     b.总访问次数 总访问次数
from zhongjian1 a
join zhongjian2 b
on a.用户 = b.用户 and a.月份 = b.月份;

结果如下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hive案例02-数值累加
其中字段意义: userid(string) month(string) count(int) 分别代表: 用户id 月份 该月访问次数 需求: 统计每个用户截止到当月为止的最大单月访问次数和累计到该月的总访问次数 最终结果为:
CoderJed
2018/09/13
2.6K0
Hive-1.2.1_06_累计报表查询
1. 数据准备 1 # 本地数据准备 2 [yun@mini01 hive]$ pwd 3 /app/software/hive 4 [yun@mini01 hive]$ ll /app/software/hive/t_access_times.dat 5 -rw-rw-r-- 1 yun yun 153 Jul 17 16:15 /app/software/hive/t_access_times.dat 6 [yun@mini01 hive]$ cat /app/software/hive/
踏歌行
2020/10/15
6040
Hive-1.2.1_06_累计报表查询
深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】
4、底层支持多种不同的执行引擎【MR/Tez/Spark】1.x默认为MR     2.x默认为Spark   当然也可以设置为Tez
Java架构师必看
2021/05/14
3.5K0
深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】
有关于MySQL的面试题
​#问题1:1月每笔消费均大于20元的用户的总消费金额#条件:1月+大于20 sum(order_amt
用户10196776
2022/11/22
1.1K0
有关于MySQL的面试题
MySQL面试题一
第四题:每个uid在9月份登录的前七次是哪几天,后7次是哪几天?(当月不足7天的取全部)
静谧星空TEL
2021/04/27
3520
图解面试题:如何分析红包领取情况?
“用户活跃表”记录了用户的登录信息,包括用户标识、用户登录日期,以及是否是新用户(如果是新注册的用户值为1;如果是老用户,值为0)。
猴子聊数据分析
2020/06/15
1.4K0
面试现场!月薪3w+的这些数据挖掘SQL面试题你都掌握了吗? ⛵
图片💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 AI 面试题库系列:https://www.showmeai.tech/tutorials/48📘 本文地址:https://www.showmeai.tech/article-detail/318📢 声明:版权所有,转载请联系平台与作者并注明出处📢 收藏ShowMeAI查看更多精彩内容图片本篇内容基于场景面试题完成,在给定场景和数据表的前提下,有一系列的分析挖掘问题,
ShowMeAI
2022/08/26
5730
面试现场!月薪3w+的这些数据挖掘SQL面试题你都掌握了吗? ⛵
同学用我的面试题拿了某大厂Offer,我却挂了?
这是一个读者自己整理的面试题问题,同学去面试某大厂,遇到了原题,结果通过了,但是整理面试题的人却挂了?
王知无-import_bigdata
2023/09/06
2500
同学用我的面试题拿了某大厂Offer,我却挂了?
链家面试题:如何分析留存率?
手机中的相机是深受大家喜爱的应用之一,下图是某手机厂商数据库中的用户行为信息表中部分数据的截图。
猴子聊数据分析
2020/06/28
3.1K1
比较经典的SQL面试题
我根据题目重新梳理了一遍,包括表结构,表之间的关系,测试数据,题目,参考答案等。其中大部分参考答案在各种数据库平台上通用。
jamesjiang
2022/11/20
8820
比较经典的SQL面试题
Hive SQL 大厂必考常用窗口函数及相关面试题
二、窗口函数的基本用法 1.基本语法 2.设置窗口的方法 1)window_name 2)partition by 子句 3) order by子句 4)rows 指定窗口大小 3.开窗函数中加order by 和 不加 order by的区别
王知无-import_bigdata
2022/11/11
3.9K0
Hive SQL 大厂必考常用窗口函数及相关面试题
图解面试题:经典50题
翻译成大白话:计算每个学号不及格分数个数,筛选出大于2个的学号并找出姓名,平均成绩,思路如图:
猴子聊数据分析
2020/06/24
6370
平平无奇SQL面试题:经典50例
组函数: 去重 distinct() 统计总数sum() 计算个数count() 平均数avg() 最大值max() 最小数min()
大数据真好玩
2021/07/07
2.7K0
金融行业项目:你每月消费多少?
交易表记录了每天交易的客户交易时间、客户号、消费类型和消费金额。其中,交易类型有两种值:消费和转账。
猴子数据分析
2020/11/26
1.1K0
Oracle经典面试题,你都掌握了吗?
--以下使用的是SQL1999的连表方式,语法不一样效果与第一题使用的SQL1992的一样
数据和云
2019/05/17
1.1K0
Oracle经典面试题,你都掌握了吗?
滴滴面试题:打车业务问题如何分析?
公司的app(类似滴滴、uber)为用户提供打车服务。现有四张表,分别是“司机数据”表,“订单数据”表,“在线时长数据”表,“城市匹配数据”表。(滴滴面试题)
猴子聊数据分析
2020/06/05
1.7K0
怎么进行用户留存分析?
此题的核心是怎么计算用户的留存数/留存率?用户留存率是电商行业经常用到的指标,用户的留存数指“第一天登录,以后几天还继续登录的用户数”,"留存率=次日的留存数/当日总的用户数"。因此先要计算出每日的总的用户数、次日的留存数,然后再计算留存率。
猴子数据分析
2023/03/07
8860
怎么进行用户留存分析?
数据库面试题+sql语句解析
1.写出表Department增加一条记录 和 更新一条记录的 SQL语句 增加记录值 (‘12’, ‘研发部’, ‘张三’) ;  更新 dept_id=’12’的记录 (‘12’, ‘研发部’, ‘张三新’) ;
天蝎座的程序媛
2022/11/18
6780
【Mysql学习之旅-2】经典sql面试题及答案分析
1、学生表 student(s_id:学生id,s_name:学生姓名,s_birth:学生生日,s_sex:学生性别):
云深i不知处
2020/09/16
1.7K0
Hive窗口函数05-GROUPING SETS、GROUPING__ID、CUBE、ROLLUP
Hive窗口函数GROUPING SETS、GROUPING__ID、CUBE、ROLLUP入门
CoderJed
2018/09/13
1.5K0
Hive窗口函数05-GROUPING SETS、GROUPING__ID、CUBE、ROLLUP
相关推荐
Hive案例02-数值累加
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验