本專欄中的許多示例將基于以下員工表(employee)。只有少數(shù)例子將以其他表格為基礎;在這些情況下,表格將與示例一起進行說明。 WITH AS 短語,也叫做子查詢部分,定義一個SQL片斷后,該SQL片斷可以被整個SQL語句所用到。有的時候,with as 是為了提高SQL語句的可讀性,減少嵌套冗余。二、SQL例句
下一個SQL查詢將創(chuàng)建一個包含公司前五名工資的員工數(shù)據(jù)的報告。這種報告必須根據(jù)給定的標準進行排序;在我們的示例中,排序標準將再次為工資降序:WITH employee_ranking AS ( SELECT employee_id, last_name, first_name, salary, RANK() OVER (ORDER BY salary DESC) as ranking FROM employee ) SELECT employee_id, last_name, first_name, salary FROM employee_ranking WHERE ranking <= 5 ORDER BY ranking 上一個查詢中的WITH子句創(chuàng)建了一個名為employee_ranking的CTE(公用表表達式),這是一種在主查詢中使用的虛擬表。 CTE中的子查詢使用函數(shù)RANK()來獲得排名中每一行的位置。子句OVER(ORDER BY salary DESC)指示RANK()值必須如何計算。薪資最高的行的RANK()函數(shù)將返回1,依此類推。最后,在主查詢的WHERE中,我們要求那些排名值小于或等于5的行。這使我們只能按排名值獲得前5行。同樣,我們使用ORDER BY子句來顯示結(jié)果集,該結(jié)果集按升序排列。三、查詢結(jié)果
|