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実装方法

推薦する

MySQL のインデックスとビューの使用方法と違いの詳細な説明

序文この記事では主に、MySQL のインデックスとビューの使用方法と違いを紹介し、参考と学習のために...

ページ要素の絶対位置と相対位置に関するある程度の理解

今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...

nginxはdockerコンテナ内に設定ファイルを自動的に生成します

企業が Docker 自動デプロイメントを構築する場合、Docker の実行時にコンテナ内の設定ファ...

MySQLカスタム変数の概念と特徴

MySQL カスタム値は、値を保存するための一時的なコンテナです。サーバーへの接続がアクティブである...

JavaScript のプライベート クラス フィールドと TypeScript のプライベート修飾子の詳細な説明

目次JavaScript のプライベート クラス フィールドとプライバシーの必要性JavaScrip...

MySQL 文字列連結と null 値の設定のためのインスタンス メソッド

#文字列連結 concat(s1,s2); テーブル内の last_name と first_nam...

ミニプログラムカスタムタブバーコンポーネントのカプセル化

この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコード...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

CSS3で実装されたグラデーションスライド効果

成果を達成する コードhtml <div class="css-slideshow&...

Javascript 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...

MySQL 8.0.3 RCがリリースされようとしています。変更点を見てみましょう。

MySQL 8.0.3がリリースされます。新機能を見てみましょうMySQL 8.0.3 は RC ...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

Vue はデータの変更をどのように追跡しますか?

目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...

JSコンストラクタとインスタンス化およびプロトタイプ導入の関係

目次1. コンストラクタとインスタンス化2. コンストラクターとインスタンス化の関係は何ですか? 3...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...