sql cookbook第11章笔记
2018-08-01 10:47:36 0 举报
AI智能生成
mysql cookbook第11章笔记
作者其他创作
大纲/内容
基础操作
11.6 最大值和最小值
问题:找出表EMP中最高工资和最低工资的员工
相关函数
MAX - 返回指定列的最大值
MIN - 返回指定列的最小值
解决方案
11.10 抑制重复
问题:在表EMP中查找不同的职位(去重)
两种方式
DISTINCT
GROUP BY
11.9 给结果分等级
问题:给表EMP中的工资分等级
标量子查询
子查询:将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用
子查询返回的是单一值的标量,如一个数字或一个字符串
解决方案
过滤结果集
11.5 选择前N档记录
问题:返回最高5档工资的员工姓名和工资
分析
解决方案
11.2 跳过N行
问题:从表EMP中查找第1、3、5、7...个员工的名字
分析
结果集按姓名排序,并按姓名分等级(`详见11.9`)
针对等级号利用`MOD函数`过滤出奇数行的数值
解决方案
11.1 结果分页
问题:给结果集分页,如第一页显示1~5行、第二页显示6~10行,以此类推
分页相关参数
LIMIT - 指定每页显示行数
OFFSET - 偏移量,用来确定页的开始行号,如不传则默认为0
语法格式
解决方案
外连接
11.3 在外连接中用OR逻辑
问题:返回部门10和20中所有员工的姓名和部门信息,并返回其他部门(不含员工信息)的部门信息
连接
内连接
左连接
右连接
解决方案
其他
11.4 确定哪些行是彼此互换的
问题:一个表中包含两次考试结果,确定哪些分数对是互换的
解决方案
附加场景
11.7 读取“未来”行
问题:找出满足这样条件的员工,其收入比紧随其后入职的员工要少
分析
查出紧随员工A入职的下一个员工的入职日期
在员工A之后入职的第一个工资高于他的员工的入职日期
若①和②结果相等,则员工A满足我们的条件
解决方案
11.8 轮换行值
问题:返回每个员工的姓名和工资以及低于自己的最高工资(后继)和高于自己的最低工资(前驱),并要求结果环绕(最高工资的前驱是最低工资,最低工资的后继是最高工资)
相关函数
COALESCE
解决方案
11.11 找到“骑士值”
骑士值
问题:返回一个结果集,包含每个部门中所有员工的姓名、部门、工资、聘用日期以及所在部门中最新入职员工的工资(骑士值)
分析
查出每个部门最新员工的入职日期
根据①查出该员工的工资
查出每个员工的姓名、部门、工资等信息,并与②的结果相联接
解决方案
11.12 生成简单的预测
问题:以数据为基础,返回额外的行和列,用来表示未来活动
分析
查出基础的数据行,每行加上值为空的额外列
在基础的数据上,计算出额外的列值
将上面查出的所有数据UNION合并在一起,并排序
解决方案
0 条评论
下一页