随笔分类 - SQL实例
记录日常遇到有意思的SQL实例
摘要:数据中可能存在层次关系,本文章主要介绍查询这种关系的实例。会大量使用递归式 CTE。 Emps 表中 EName 员工和 MGR 上级之间的关系如下: 每个上级也同样是员工,主管和员工之间为父子关系。 1.呈现父子关系 情景:返回员工数据的同时返回上级信息(名字,角色,薪水)。如下: 解决方案:基于
阅读全文
摘要:本文章主要介绍制作报表的查询,这些查询通常需要考虑与报表相关的格式设置,还需使用多级聚合。 1.将结果集转置为一行(行转列) 将多行中的值转换为单行中的列。 情景:有一个员工表,统计出一个结果集,显示了每个部门的员工数量,如下图一。现在需要调整输出格式,显示成一行,如图二。 图一 图二 解决方案:使
阅读全文
摘要:本篇文章示例介绍的查询操作不同于其他查询操作,它们体现了不同的查询思路,需要以每次一页的方式显示结果集。 1.在结果集中翻页 问题:返回员工表中薪水排名前五的员工,然后再返回接下来排名前五的员工。 解决方案:这个问题看起来很简单,只需要根据“薪水”这一列进行倒序排序,然后分页操作即可。但是如果存在重
阅读全文
摘要:1.找出一系列连续的值 问题:判断哪些行表示一系列连续的项目。即某一行项目开始时间和前一行的项目结束时间是一致的。 示例表: 解决方案:利用窗函数 LEAD OVER 来查找下一行的项目开始时间,从而避免使用自链接。需要按照项目ID进行排序。 select * from ( select ProjI
阅读全文