真题回顾

博主的一位朋友今天去面试,题目是这样的。有一张表,里面有三个字段,分别为datetime,city,order,要求计算出2017年10月1日每个城市订单数量与上周同一天的比值。稍加分析可知,这是一道典型的求同比、环比类型的题目。

知识点梳理

同比一般情况下是今年第n月与去年第n月比。同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。如,本期2月比去年2月,本期6月比去年6月等。其计算公式为:同比发展速度的公式应该改成:同比发展速度=本期发展水平/去年同期水平×100%;同比增长速度=(本期发展水平-去年同期水平)/去年同期水平×100%。在实际工作中,经常使用这个指标,如某年、某季、某月与上年同期对比计算的发展速度,就是同比发展速度。

同比增长率=(本期数-同期数)/|同期数|×100%

环比,表示连续2个统计周期(比如连续两月)内的量的变化比。

环比增长率=(本期数-上期数)/上期数×100%。 反映本期比上期增长了多少;环比发展速度,一般是指报告期水平与前一时期水平之比,表明现象逐期的发展速度。

环比增长率=(本期数-上期数)/上期数×100%

DATE_SUB() 函数从日期减去指定的时间间隔。

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式;expr 参数是您希望添加的时间间隔;type 参数可以是下列值:YEAR、MONTH、WEEK、DAY、HOUR等等。

实例

假设我们有如下的表:

现在,我们希望从 “OrderDate” 减去 2 天。

我们使用下面的 SELECT 语句:

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders;

结果

真题详解

1.创建数据表

create table job_interview (datetime date,city varchar(10),orderId varchar(10));

2.插入模拟数据

insert into job_interview (datetime,city,orderId) values (20190924,'Beijing','123a'),(20190924,'Beijing','123b'),(20190924,'Beijing','123c');

insert into job_interview (datetime,city,orderId) values (20190924,'Shanghai','123a'),(20190924,'Shanghai','123b'),(20190924,'Shanghai','123c'),(20190924,'Shanghai','123d');

insert into job_interview (datetime,city,orderId) values (20190917,'Beijing','123a'),(20190917,'Beijing','123b');

insert into job_interview (datetime,city,orderId) values (20190917,'Shanghai','123a'),(20190917,'Shanghai','123b');

insert into job_interview (datetime,city,orderId) values (20190224,'Beijing','123c');

insert into job_interview (datetime,city,orderId) values (20190224,'Shanghai','123c');

3.书写sql

select distinct city,count(case when datetime='20190924' then orderId else null end) over (partition by city) / count(case when datetime=date_sub('20190924',interval 1 week) then orderId else null end) over (partition by city) as '比例' from job_interview;

select city,count(case when datetime='20190924' then orderId else null end) / count(case when datetime=date_sub('20190924',interval 1 week) then orderId else null end) as '比例' from job_interview group by city;

结束语

以上内容简单地把环比的情况进行了说明,如果能够看懂以上内容,那么环比增长率就比较简单了。相应地,同比计算也是如此,比较简单。当然,可能博主水平有限,如果大家有什么比较好的方法,也可以留言哦。我很早就建立了一个微信交流群,里面都是数据行业的从业者,有数据开发、数据分析、数据仓库、BI、数据运营等等。讨论交流的内容涉及很广,如Python、Hadoop、Hive、Oracle、Mysql、Spark等等,欢迎大家加我微信,博主带你进群。加微信请备注:微信交流群字样。谢谢~祝大家开心快乐每一天!

mysql 同比sql_mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比...相关推荐

  1. 计算同比和环比的区别_【数据说第三期】同比和环比数据分析时,有哪些需要注意的点?...

    [写在前面] 上期探讨了数据分析与数据增长的核心逻辑,了解了数据分析和数据增长的逻辑和大体工作流程等.([数据说第二期]数据分析与数据增长核心逻辑杂谈)'' 本期先从数据分析的一环开始,针对" ...

  2. mysql幻读和不可重复读的区别_面试官:MySQL的可重复读级别能解决幻读吗

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:宁愿. 来源:https://juejin.im/post/5c9040e95188252d92095a9e 引言 之前 ...

  3. 不可重复读和幻读的区别_面试官:MySQL的可重复读级别能解决幻读吗

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:宁愿. 来源:https://juejin.im/post/5c9040e95188252d92095a9e 引言 之前 ...

  4. 【华为OD机试真题 JAVA】计算堆栈中的剩余数字

    JS版:[华为OD机试真题 JS]计算堆栈中的剩余数字​​​​​​​ 标题:计算堆栈中的剩余数字 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限 向一个空栈中依次存入正整数, 假设 ...

  5. 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕.

    1.MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并 ...

  6. 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!

    1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...

  7. mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?

    {port} -u${user} -p ,输入密码. 使用连接器连接服务端: 连接成功之后,权限修改不会影响当前连接,连接的有效期默认是8个小时: 连接之后,执行过程中使用内存会持续增加,应该定时重置 ...

  8. 群签名和环签名的区别_环签名与群签名

    环签名:2001年,Rivest, shamir和Tauman三位密码学家首次提出了环签名.是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作.环签名方案中签名者首先选定一个临时的签名者集 ...

  9. 京东最新Java面试真题解析!mysql两个时间比较

    为了更好的梳理相关知识,咱们先看纯手绘知识体系图 1.1 Kafka知识体系大纲 由于我手绘这些知识体系大纲是用的xmind软件,无法上传,所以都以截图的形式展示,细节处不清楚(毕竟图片形式有限) 1 ...

  10. oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?

    概述 我们知道MySQL Innodb 对于索引长度的限制为 767 字节,并且UTF8mb4字符集是4字节字符集,则 767字节 / 4字节每字符 = 191字符(默认索引最大长度),所以在varc ...

最新文章

  1. mysql安装ZIP存档什么意思_关于MySQLzip安装常见报错解决方案!
  2. Android之平台架构
  3. android WebSocket 发送图片
  4. sap开发-采购订单更改历史table
  5. 360漏洞更新后系统进不去
  6. scala 函数中嵌套函数_Scala中的嵌套函数 用法和示例
  7. ros中move_group的参数动态设置
  8. 4_python基础—判断(if)语句
  9. 计算机职称考试知识点,职称计算机考试复习知识点
  10. BizTalk动手实验(十七)ODBC适配器使用
  11. 编写lisp程序解一元二次方程_用C语言编写一程序求解一元二次方程的根。
  12. 图片轮流翻转,一直循环
  13. Drupal 7.31 SQL注入漏洞
  14. MES系统整体解决方案
  15. linux如何部署btsync同步?
  16. 项目管理:项目质量管理
  17. 数据不正态分布如何办?
  18. 不同框架模型的对比试验
  19. 初学博科YIGO2.0学习心得--下推
  20. 图形驱动程序和显卡驱动什么区别_鸡血驱动已发布,可新买的显卡打不上驱动?这事儿别急...

热门文章

  1. 【校内互侧】ZYF loves qaq (找规律+递推)
  2. php 模拟登录163邮箱,PHP模拟登陆163邮箱发邮件及获取通讯录列表的方
  3. 单例模式(Single)
  4. 面试智力题,1000瓶水,其中一瓶有毒,而且毒性无敌,稀释一亿倍毒性都不减,毒性的发作时间最长为1小时,请问怎样可以在两个小时之内找出哪瓶水有毒
  5. 儿童吹泡泡水简单配方_教你泡泡水的制作方法 自制泡泡水配方大全
  6. 网络安全-终端安全检测和防御技术
  7. 二进制负数转换成十进制
  8. 十进制转换成二进制的计算器
  9. w ndows 10画图,如何在Windows 10中打开和使用画图
  10. matlab支持向量机预测电机故障,关于支持向量机(SVM)的一个简单应用实例及matlab代码...