本专栏中的许多示例将基于以下员工表(employee)。只有少数例子将以其他表格为基础;在这些情况下,表格将与示例一起进行说明。
一、WITH
WITH AS 短语,也叫做子查询部分,定义一个SQL片断后,该SQL片断可以被整个SQL语句所用到。有的时候,with as 是为了提高SQL语句的可读性,减少嵌套冗余。
二、SQL例句
这个查询类似于上一节课的前5个查询,但我们需要最后5行。我们只需要在排序类型上进行更改,即使用ASC而不是DESC。在CTE中,我们将根据工资的升序(最低工资优先)创建一个排名列:
WITH employee_ranking AS (
SELECT
employee_id,
last_name,
first_name,
salary,
RANK() OVER (ORDER BY salary ASC) as ranking
FROM employee
)
SELECT
employee_id,
last_name,
first_name,
salary
FROM employee_ranking
WHERE ranking <= 5
ORDER BY ranking
在主查询中,我们使用WHERE ranking<=5来筛选工资最低的5行。之后,我们使用ORDER BY排名按排名值对报告的行进行排序。