題目:編寫乙個 sql 查詢,獲取employee
表中第二高的薪水(salary)
例如下述employee
表,sql查詢應該返回200
作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
期望結果如下:
+---------------------+
| secondhighestsalary |
+---------------------+
| 200 |
+---------------------+
解法:選擇出所有不重複的薪水,按照薪水降序排列後,選擇第二條資料,即為第二高的薪水
select (select distinct salary from employee
order by salary desc
limit 1 offset 1) as secondhighestsalary;
ps:limit n offset m 表示:從第m條開始,選取n條資料(從0開始排序,所以上面選第二條資料 是 offset 1)
題目:編寫乙個 sql 查詢,獲取employee
表中第 n 高的薪水(salary)
例如下述employee
表,n = 2 時,應返回第二高的薪水200
。如果不存在第 n 高的薪水,那麼查詢應返回null
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
期望結果如下:
+------------------------+
| getnthhighestsalary(2) |
+------------------------+
| 200 |
+------------------------+
解法:思路與上面第二高薪水相同,降序排列後,使用limit offset 選取第n高的薪水
create function getnthhighestsalary(n int) returns int
begin
declare m int;
set m = n-1;
return (
select distinct salary
from employee
order by salary desc
limit 1 offset m
);end
ps:這一題涉及mysql的自定義函式(user-defined function udf),可以先了解下再解題
建立自定義函式,簡單來說就是:
create function 函式名(形參列表) returns 返回型別 -- 注意是retruns
begin
函式體 —— 函式內定義的變數,如上面的 set m = n-1;
返回值 ——return部分
end
資料庫題目 第二高的薪水
編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。方法一 使用子查詢和 limit 子句 演算法將不同的薪資按降序排序,然後使用 limit ...
資料庫問題
資料庫問題 delphi windows sdk api 怎樣將兩個.dbf資料庫檔案,匯入到乙個表裡?在sql中有乙個叫企業管理器的東西.找到它然後找到你的目標資料庫,滑鼠右鍵有個匯入資料,裡面有個選項叫 使用一條查詢語句匯入.然後你就在這個查詢語句中寫一條sql命令,該命令同時查兩張表,但是只會...
資料庫問題!!
怎麼合併成乙個?這麼寫可以 select model,price from pcs where model in select model from products where maker b union select model,price from laptops where model in...