LeetCode力バックルブラシタイトルデータベース(185):すべての従業員のための3つの高部門の賃金

タイトル

Employee表は、各従業員は、その対応するジョブ番号ID、名前、名前、給与および賃金部門番号のDepartmentIdのを持っている、すべての従業員に関する情報が含まれています。

ここに画像を挿入説明
Departmentテーブルには、会社のすべてのセクターに関する情報が含まれています。

ここに画像を挿入説明
3人の高い賃金を得るために、各部門の全従業員を見つけるために、SQLクエリを記述します。例えば、上記の表が与えられると、クエリの結果が返されるべきです。

ここに画像を挿入説明
説明:

IT部門は、マックスはウィルの給与が第三位、ランディとジョーが2番目に高い賃金を持っている、最も高い賃金を受け取りました。セールス(営業)の2つだけの従業員は、最高賃金ヘンリーは、サムの給与は、第二位。

分析

SELECT
	* 
FROM
	employee;

ここに画像を挿入説明

SELECT
	* 
FROM
	department;

ここに画像を挿入説明

-- 回忆一下 count 函数
-- count(字段名)  # 返回表中该字段总共有多少条记录


-- 回忆一下 DISTINCT 关键字
-- DISTINCT 字段名   # 过滤字段中的重复记录


-- 我们先找出公司里前3高的薪水,意思是不超过三个值比这些值大


-- 公司里前3高
SELECT
	e1.NAME AS 'Employee',
	e1.Salary 
FROM
	Employee e1 
WHERE
	3 > -- 找出不超过三条的量
	( SELECT count( DISTINCT e2.Salary ) FROM Employee e2 WHERE e2.Salary > e1.Salary -- 找出e2中的薪水比e1大的那些行
	);

ここに画像を挿入説明

	-- 各个部门的前三高
SELECT
	d.NAME AS 'Department',
	e1.NAME AS 'Employee',
	e1.Salary 
FROM
	Employee e1
	JOIN Department d ON e1.DepartmentId = d.Id 
WHERE
	3 > (
SELECT
	COUNT( DISTINCT e2.Salary ) 
FROM
	Employee e2 
WHERE
	e2.Salary > e1.Salary 
	AND e1.DepartmentId = e2.DepartmentId 
	);

ここに画像を挿入説明

答え

-- 各个部门的前三高
SELECT
	d.NAME AS 'Department',
	e1.NAME AS 'Employee',
	e1.Salary 
FROM
	Employee e1
	JOIN Department d ON e1.DepartmentId = d.Id 
WHERE
	3 > (
SELECT
	COUNT( DISTINCT e2.Salary ) 
FROM
	Employee e2 
WHERE
	e2.Salary > e1.Salary 
	AND e1.DepartmentId = e2.DepartmentId 
	);

関連事業

6ヶ月以内

ここに画像を挿入説明

1 6ヶ月〜1年

ここに画像を挿入説明

1年~2年

ここに画像を挿入説明

公開された547元の記事 ウォンの賞賛704 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/qq_35456045/article/details/104537909