當前位置:首頁 » 編程語言 » sql工資前三高怎麼找
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql工資前三高怎麼找

發布時間: 2023-04-14 11:19:43

1. 編寫一個 sql 查詢,找出每個部門工資前三高的員工

Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id 。

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部門的信息。

+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
編寫一個 SQL 查詢,找出每個部門工資前三高的員工。例如,根據上述給定的表格,查詢結果應返回:

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

Sql如下:
SELECT
d.Name Department,e1.Name Employee,e1.Salary Salary
FROM
Employee e1,
Employee e2 ,
Department d
WHERE
e1.DepartmentId = e2.DepartmentId
AND e1.Salary <= e2.Salary
and e1.DepartmentId=d.Id
group by e1.id
having count(DISTINCT e2.Salary)<=3
order by d.Name,e1.Salary desc

2. sql查詢:部門工資前三高的員工和部門工資最高的員工

Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id 。

+------+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+------+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Randy | 85000 | 1 |
+------+-------+--------+--------------+

Department 表包含公司所有部門的信息。
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+

編寫一個 SQL 查詢,找出每個部門工資前三高的員工。
例如,根據上述給定的表格,查詢結果應返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

不妨假設e1=e2=[6,5,4,3],則子查詢的過程如下:
1、e1.Salary=3;則e2.Salary可以取4、5、6;COUNT(DISTINCT e2.Salary)=3
2、e1.Salary=4;則e2.Salary可以取5、6;COUNT(DISTINCT e2.Salary)=2
3、e1.Salary=5;則e2.Salary可以取6;COUNT(DISTINCT e2.Salary)=1
4、e1.Salary=6;則e2.Salary無法取值;COUNT(DISTINCT e2.Salary)=0
則要令COUNT(DISTINCT e2.Salary) < 3 的情況有上述的4、3、2.
也即是說,這等價於取e1.Salary最大的三個值。

3. 經典面試題-大廠SQL題目

正確答案:

正確答案:

給定 Employee 表,編寫一個 SQL 查詢,該查詢可以獲取收入超過他們經理的員工的姓名。在上面的表格中,Joe 是唯一一個收入超過他的經理的員工。

正確答案:

Customers 表:

Orders 表:

例如給定上述表格,你的查詢應返回:

正確答案:

例如,給定上面的 Logs 表, 1 是唯一連續出現至少三次的數字。

正確答案:

或者

例如,根據上述給定的 Scores 表,你的查詢應該返回(按分數從高到低排列):

正確答案:

例如上述 Employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。

正確答案:

示例:

假如數據輸入的是上表,則輸出結果如下:

注意:
如果學生人數是奇數,則不需要改變最後一個同學的座位。
正確答案:

例如,根據上述給定的 Weather 表格,返回如下 Id:

正確答案:

Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id。

Department 表包含公司所有部門的信息。

編寫一個 SQL 查詢,找出每個部門工資最高的員工。例如,根據上述給定的表格,Max 在 IT 部門有最高工資,Henry 在 Sales 部門有最高工資。

正確答案:

表1: Person

PersonId 是上表主鍵

表2: Address

AddressId 是上表主鍵

編寫一個 SQL 查詢,滿足條件:無論 person 是否有地址信息,都需要基於上述兩表提供 person 的以下信息:

FirstName, LastName, City, State

正確答案:

注意,您必只能寫一個 Update 語句,請不要編寫任何 Select 語句。
例如:

運行你所編寫的更新語句之後,將會得到以下表:

正確答案:

這里有張 World 表

如果一個國家的面積超過300萬平方公里,或者人口超過2500萬,那麼這個國家就是大國家。
編寫一個SQL查詢,輸出表中所有大國家的名稱、人口和面積。
例如,根據上表,我們應該輸出:

正確答案:

Id 是這個表的主鍵。

例如,在運行你的查詢語句之後,上面的 Person 表應返回以下幾行:

正確答案:

Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id 。

Department 表包含公司所有部門的信息。

編寫一個 SQL 查詢,找出每個部門工資前三高的員工。例如,根據上述給定的表格,查詢結果應返回:

正確答案

例如上述 Employee 表,SQL查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。

正確答案:

例如,下表 cinema:

對於上面的例子,則正確的輸出是為:

正確答案:

請列出所有超過或等於5名學生的課。
例如,表:

應該輸出:

Note:
學生在每個課中不應被重復計算。

正確答案:

Users 表存所有用戶。每個用戶有唯一鍵 Users_Id。Banned 表示這個用戶是否被禁止,Role 則是一個表示(『client』, 『driver』, 『partner』)的枚舉類型。

寫一段 SQL 語句查出 2013年10月1日 至 2013年10月3日 期間非禁止用戶的取消率。基於上表,你的 SQL 語句應返回如下結果,取消率(Cancellation Rate)保留兩位小數。

正確答案

示例:

根據以上輸入,你的查詢應返回以下結果:

說明:所有電子郵箱都是小寫字母。

正確答案:

請編寫一個查詢語句,找出高峰期時段,要求連續三天及以上,並且每天人流量均不少於100。
例如,表 stadium:

對於上面的示例數據,輸出為:

Note:
每天只有一行記錄,日期隨著 id 的增加而增加。

正確答案: