我想獲取薪水第三高的人的名字。有沒有辦法為少于 2 名員工的部門顯示任何自定義訊息?
例如:在 lag() 中,我們可以使用類似 LAG(salary, 1, 'first in list') 的東西。
目前它顯示為空
表資料
uj5u.com熱心網友回復:
由于我拒絕打開你的鏈接,我不知道我的查詢中的表名和列名是否正是你所需要的。如果沒有,只需更改它們。
SELECT department, name
FROM
(SELECT department, name, salary, ROW_NUMBER() OVER
(PARTITION BY department ORDER BY salary DESC) AS rn
FROM yourtable
) sub
WHERE rn = 3
UNION ALL
SELECT department, 'No One'
FROM yourtable
GROUP BY department
HAVING COUNT(department) < 3
ORDER BY department;
可能有更短的選項,但是這個很清楚:第一個查詢找到部門和該部門中薪水第三高的人的姓名。它不會為少于三個人的部門選擇任何東西。
第二個查詢將查找人員少于三人的所有部門。
旁注:如果某個部門的多個人具有相同的第三高薪水,則此查詢將只查詢一個人。由于您的描述不夠詳細,目前尚不清楚這是否適合您。如有必要,您可以自行調整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/535369.html
標籤:数据库数据库窗口函数
上一篇:MySQL:找到一行后中斷查詢
下一篇:mysql結果由多行錯誤組成
