【题目】

下面是某公司每天的营业额,表名为“日销”。“日期”这一列的数据类型是日期类型(date)。

请找出所有比前一天(昨天)营业额更高的数据。(前一天的意思,如果“当天”是1月,“昨天”(前一天)就是1号)

例如需要返回一下结果:

【解题思路】

1.交叉联结

首先我们来复习一下之前课程《从零学会sql》里讲过的交叉联结(corss join)的概念。

使用交叉联结会将两个表中所有的数据两两组合。如下图,是对表“text”自身进行交叉联结的结果:

直接使用交叉联结的业务需求比较少见,往往需要结合具体条件,对数据进行有目的的提取,本题需要结合的条件就是“前一天”。

2.本题的日销表交叉联结的结果(部分)如下。这个交叉联结的结果表,可以看作左边三列是表a,右边三列是表b。

红色框中的每一行数据,左边是“当天”数据,右边是“前一天”的数据。比如第一个红色框中左边是“当天”数据(2号),右边是“前一天”的数据(1号)。

题目要求,销售额条件是:“当天” > “昨天”(前一天)。所以,对于上面的表,我们只需要找到表a中销售额(当天)大于b中销售额(昨天)的数据。

3.另一个需要着重去考虑的,就是如何找到 “昨天”(前一天),这里为大家介绍两个时间计算的函数:

datediff(日期1, 日期2):

得到的结果是日期1与日期2相差的天数。

如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负。

例如:日期1(2019-01-02),日期2(2019-01-01),两个日期在函数里互换位置,就是下面的结果

另一个关于时间计算的函数是:

timestampdiff(时间类型, 日期1, 日期2)

这个函数和上面diffdate的正、负号规则刚好相反。

日期1大于日期2,结果为负,日期1小于日期2,结果为正。

在“时间类型”的参数位置,通过添加“day”, “hour”, “second”等关键词,来规定计算天数差、小时数差、还是分钟数差。示例如下图:

【解题步骤】

1.将日销表进行交叉联结

2.选出上图红框中的“a.日期比b.日期大一天”

可以使用“diffdate(a.日期, b.日期) = 1”或者“timestampdiff(day, a.日期, b.日期) = -1”,以此为基准,提取表中的数据,这里先用diffdate进行操作。

代码部分:

select *from 日销 as a cross join 日销 as b      on datediff(a.日期, b.日期) = 1;

得到结果:

3.找出a中销售额大于b中销售额的数据

where a.销售额(万元) > b.销售额(万元)

得到结果:

4.删掉多余数据

题目只需要找销售额大于前一天的ID、日期、销售额,不需要上表那么多数据。所以只需要提取中上表的ID、日期、销售额(万元)列。

结合一开始提到的两个处理时间的方法,最终答案及结果如下:

select a.ID, a.日期, a.销售额(万元)from 日销 as a cross join 日销 as b      on datediff(a.日期, b.日期) = 1where a.销售额(万元) > b.销售额(万元);

或者

select a.ID, a.日期, a.销售额(万元)from 日销 as a cross join 日销 as b      on timestampdiff(day, a.日期, b.日期) = -1where a.销售额(万元) > b.销售额(万元);

【本题考点】

1)考察逻辑思维能力,可以使用课程《分析方法》中的逻辑树分析方法将复杂问题拆解成一个一个可以解决的子问题

2)考察多表联结

3)针对时间的处理语句是在业务中经常用到的,需要熟练掌握。

4) 尤其考察对不同sql数据格式处理的掌握程度,

【举一反三】

下面是气温表,名为weather,date列的数据格式为date,请找出比前一天温度更高的ID和日期

参考答案:

select a.ID, a.datefrom weather as a cross join weather as b      on datediff(a.date, b.date) = 1where a.temp > b.temp;

或者:

select a.ID, a.datefrom weather as a cross join weather as b      on timestampdiff(day, a.date, b.date) = -1where a.temp > b.temp;

得到结果:

推荐:如何从零学会人工智能必备技能:数据库和sql?

sql 大于某个日期_图解面试题:如何比较日期数据?相关推荐

  1. sql server 中获取前一天日期_图解面试题:如何比较日期数据?

    ​[题目] 下面是某公司每天的营业额,表名为"日销"."日期"这一列的数据类型是日期类型(date). 请找出所有比前一天(昨天)营业额更高的数据.(前一天的意 ...

  2. sql如何让计算出来的结果百分数显示_图解面试题:如何交换数据?

    [题目] 小明是一所学校的老师,她有一张 '学生表',平时用来存放座位号和学生的信息.其中,座位号是连续递增的.总的座位数是偶数. 现在,小明想改变相邻俩学生的座位.你能不能帮她写一个sql查来输出想 ...

  3. sql server 中获取前一天日期_图解SQL面试题:如何比较日期数据?

    ​[题目] 下面是某公司每天的营业额,表名为"日销"."日期"这一列的数据类型是日期类型(date). 请找出所有比前一天(昨天)营业额更高的数据.(前一天的意 ...

  4. sql 列求和_图解面试题:累计求和问题如何分析?

    [题目] "薪水表"中记录了员工发放的薪水.包含雇员编号,薪水.起始日期.结束日期. 其中,薪水是指该雇员在起始日期到结束日期这段时间内的薪水.当前员工是指结束日期 = '9999 ...

  5. mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯

    在前面的学习中我们提到过字段类型这个概念,本篇的主题就是来讲一种常用而相对复杂的类型:日期与时间. MySQL中表示日期与时间的数据类型有很多种,但主要的不外乎下面五种: 记住上面表中的"范 ...

  6. ls mac 显示最近修改日期_如何在Mac上按日期排序文件 | MOS86

    许多Mac用户按名称和类型对文件进行排序,但是按日期排序档案最有用的方法之一就是.Mac Finder可以为文件,文档,应用程序和文件夹提供各种不同的基于日期的排序选项,并且它们通常在Finder列表 ...

  7. 今天日期减去过去日期_在EXCEL怎么用今天日期减去之前的日期

    一. Excel日期计算的基础 事实上,Excel处理日期的方式和我们想象的有些不同.在我们眼中,日期是含有年.月.日的有特定格式的数据.但是,Excel却在内部把日期作为以 1 开始的时间序列数存储 ...

  8. call 存储过程时必须声明表示符_图解面试题:SQL存储过程有什么用?

    面试中有时候会问:存储过程有什么用?看了今天的知识,你就知道如何回答了. 1.存储过程是什么? 假如你每天要开车完成一些列重复的操作:车钥匙启动车,倒车.现在出现了一款新车,可以自动的完成这些重复的工 ...

  9. sql大于某个时间_学习SQL-复杂查询

    练习一.创建每科课程的平均成绩视图 视图优点: 频繁使用的SQL语句可以保存在视图中,特别是在进行汇总以及特别的查询条件导致SQL查询语句特别庞大时候. 视图里的数据可以跟随原表的变化自动更新. 视图 ...

最新文章

  1. 了不起的程序员们,瞧,这是为你们准备的 2021 年度惊喜!
  2. 第一次来请大家多多关照---毕业生找工作篇
  3. abb变频器电机过热保护怎么复位_变频器驱动的电机过热该怎么办
  4. 两平面平行方向向量关系_立体几何平行证明的四大必杀绝技------赞!很赞!!非常赞!!!...
  5. 数据结构(四)串的动态数组存储
  6. 动手学PaddlePaddle(5):迁移学习
  7. 一次性从linux发送多个文件到windows
  8. 联想 android 5.1 root权限,联想a520一键root权限获取教程(图文)
  9. nginx对listen端口的优化 -- 第一篇
  10. C#重载操作符==和!=时注意问题
  11. P1160 队列安排 (模拟链表)
  12. SPSS Ver24.0安装包及详细步骤【SPSS 077期】
  13. mac使用被动ftp模式(pasv)_flashfxp连接失败,flashfxp连接失败的原因及好用的ftp工具下载...
  14. 三角形的内切圆和外接圆半径公式
  15. 文献阅读笔记怎么写?
  16. 相机镜头选择:相机焦距、视场角和景深(可视距离)之间的关系
  17. Dubbo学习之DubboService
  18. BOM 和 DOM 的区别是什么?
  19. Apache 防止恶意解析
  20. PS自动批量处理文件夹下所有文件

热门文章

  1. Android Service: 启动service, 停止service
  2. 世界变化快,不学“SQL托管实例”跟不上时代
  3. RDS查看Binlog日志内容
  4. 宝洁侮辱女性?其公众号发文 “女人脚臭是男人的5倍”,官方回应了...
  5. 一汽大众将召回3.7万辆存自燃隐患车辆
  6. “滤镜景点”太坑遭吐槽!小红书致歉:将推出景区踩坑榜
  7. 马斯克:特斯拉Model S Plaid交付时间将推迟至6月10日
  8. Redmi Note 10 Pro发布 首发价1499元起
  9. iOS 14.5刚推送,苹果隐私政策就遭反垄断投诉
  10. 被骂十几年,躺赚上千亿!这个“土匪”行业,还能浪多久?