LeetCode の SQL 実装 (184. 部門内で最も高い給与)

LeetCode の SQL 実装 (184. 部門内で最も高い給与)

[LeetCode] 184. 部門最高給与

従業員テーブルにはすべての従業員が保存されます。すべての従業員には ID と給与があり、部門 ID の列もあります。

+----+-------+--------+--------------+
| ID | 名前 | 給与 | 部門 ID |
+----+-------+--------+--------------+
| 1 | ジョー | 70000 | 1 |
| 2 | ヘンリー | 80000 | 2 |
| 3 | サム | 60000 | 2 |
| 4 | 最大 | 90000 | 1 |
+----+-------+--------+--------------+

部門テーブルには会社のすべての部門が保存されます。

+----+----------+
| ID | 名前 |
+----+----------+
| 1 | IT |
| 2 | 販売 |
+----+----------+

各部門で最も給与の高い従業員を検索する SQL クエリを作成します。上記のテーブルでは、IT 部門では Max が給与が最も高く、営業部門では Henry が給与が最も高くなっています。

+------------+----------+---------+
| 部門 | 従業員 | 給与 |
+------------+----------+---------+
| IT | 最大 | 90000 |
| 売上 | ヘンリー | 80000 |
+------------+----------+---------+

この問題では、従業員と部門という 2 つのテーブルが与えられ、部門内で最も高い給与を得ている人を探すように求められます。実際、この問題は、2 番目に高い給与2 つのテーブルの結合を組み合わせたものです。2 つのテーブルを結合して、最も高い給与を見つける必要があります。そこで、まず 2 つのテーブルを交差させ、次に結果テーブルで必要な列をマークし、最も高い給与を見つけます。これを実現するには、Max キーワードを使用します。以下のコードを参照してください。

解決策1:

SELECT d.Name AS Department、e1.Name AS Employee、e1.Salary FROM Employee e1
JOIN Department d ON e1.DepartmentId = d.Id WHERE Salary IN 
(SELECT MAX(Salary) FROM Employee e2 WHERE e1.DepartmentId = e2.DepartmentId);

また、Where を使用して Join キーワードを使用せずに 2 つのテーブルを結合し、上記と同じ方法で最高給与を見つけることもできます。

解決策2:

SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM Employee e, Department d
e.DepartmentId = d.Id かつ e.Salary = (SELECT MAX(Salary) FROM Employee e2 WHERE e2.DepartmentId = d.Id);

次のメソッドでは、Max キーワードを使用せず、Max キーワードと同じ効果を実現する >= 記号を使用します。以下のコードを参照してください。

解決策3:

SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM Employee e, Department d
e.DepartmentId = d.Id かつ e.Salary >= ALL の場合 (従業員 e2 から Salary を選択、e2.DepartmentId = d.Id の場合)。

類似トピック:

2番目に高い給与

2つのテーブルを結合する

これで、LeetCode (184. 部門最高給与) の SQL 実装に関するこの記事は終了です。部門最高給与の SQL 実装に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)
  • SQL 実装 LeetCode (185. 部門内で最も給与の高い上位 3 名)
  • LeetCode の SQL 実装 (183. 注文をしたことがない顧客)
  • LeetCode の SQL 実装 (182. 重複するメールボックス)
  • LeetCode の SQL 実装 (181. 従業員は管理職よりも収入が高い)
  • SQLはLeetCodeを実装します(180.連続した数字)
  • LeetCode の C++ 実装 (組み合わせの最大数は 179)
  • LeetCode の SQL 実装 (197. 気温上昇)

<<:  Flexレイアウトとスケーリング計算についての簡単な説明

>>:  ウェブサイトのBGM実装方法

推薦する

JavaScript における Arguments オブジェクトの使用に関する詳細な説明

目次序文議論の基本概念議論の役割実パラメータと仮パラメータの数を取得する実際のパラメータ値を変更する...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

Vue+Openlayer をベースに geojson を動的に読み込む方法

1つ以上の機能をロードする <テンプレート> <div id="map&...

Vueモバイル端末は左スライド編集と削除の全プロセスを実現します

序文プロジェクトのニーズに応じて、Vue-touch を使用して、vue モバイル端末の左スワイプ編...

JavaScriptの擬似配列と配列の使い方と違い

擬似配列と配列JavaScript では、5 つのプリミティブ データ型を除き、関数を含め、その他す...

Nginx アップロードファイルのサイズを変更する簡単な方法

オリジナルリンク: https://vien.tech/article/138序文私は、マークダウン...

Linuxのtimeコマンドの使い方の詳しい説明

1. コマンドの紹介時間は、コマンドの実行に費やされた時間や関連するシステム リソース、その他の情報...

2008 年の Web デザインにおける 10 の経験

<br />インターネットは絶えず変化しており、BusinessWeek.com は専門...

ウェブページのFOUC問題によるウェブページの混乱の解決策

FOUC は Flash of Unstyled Content の略で、FOUC と略されます。簡...

MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

目次1. マルチインスタンスとは2. 複数インスタンスのインストールの準備3. MYSQLの複数イン...

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

Centos7 に Docker をインストールします (2020 の最新バージョンが利用可能、コピーして貼り付けるだけ)

操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...