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 パフォーマンス最適化インデックス プッシュダウン

インデックス条件プッシュダウン (ICP) は MySQL 5.6 で導入され、クエリを最適化するた...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

node.js が大規模プロジェクトに適さない理由

目次序文1. アプリケーションコンポーネント2. アプリケーションの種類3. アプリケーションサービ...

MySQL mysqladmin クライアントの使用の概要

目次1. サーバーの状態を確認します。 2. ルートパスワードを変更します。 3. mysqlser...

Vueデータ変更検出の基本的な実装の簡単な分析

目次1. オブジェクトの変更検出2. オブジェクトに関する質問配列変更検出3.1 背景3.2 実装I...

JavaScript を使用して userAgent を通じていくつかの一般的なブラウザを判別する方法

序文通常、h5 ページを作成するときは、WeChat、QQ、Weibo などのエコシステム内でトラフ...

データバインディングとリストデータの表示にはVue3を使用する

目次1. Vue2との比較1. Vue3の新機能2. Vue2とVue3の応答原理の比較3. 配列の...

CMDコマンドを使用してMySqlデータベースを操作する方法の詳細な説明

まず、mysqlサービスを開始および停止します ネットストップmysql ネットスタートMySQL ...

Web ページのデザインを学ぶときに習得すべきコードは何ですか?

この記事では、Web ページ制作を学ぶ過程で習得すべきテクニックの一部を詳しく紹介します。これらの内...

Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解

この記事は主に、Nginx 7 層負荷分散のいくつかのスケジューリング アルゴリズムを紹介します。こ...

Vueのインストールと使用

目次1. Vueのインストール方法1: CDNの導入方法2: 直接ダウンロードしてインポートする方法...

20個のJavaScriptワンラインコードを共有する

目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...

MySQL で特定の親行のすべての子行を見つけるソリューション

序文注: テストデータベースのバージョンはMySQL 8.0ですテーブルを作成し、ユーザー scot...

Linuxコマンドに基づいてフォルダー内の特定のファイルパスを抽出します

最近では、特定のフォルダ内の特定のファイルを自動的に検索する必要があり、ファイルパスとファイル名を別...