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 状態コンテナ Redux の詳細な説明

目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...

Docker+K8S クラスタ環境構築と分散アプリケーション展開

1. Dockerをインストールする yumでdockerをインストール #サービスを開始する sy...

MySQL統計データテーブルの設計方法

目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

コンピュータが予期せずシャットダウンした後、VMware で Linux がインターネットに接続できない問題の解決策

問題の説明: Linux システムのネットワーク カード ファイル /etc/sysconfig/n...

シンプルな加算計算機の JavaScript 実装

この記事では、参考までに、加算計算機を実装するためのJavaScriptの具体的なコードを紹介します...

Vue+el-tableはセルの結合を実現します

この記事の例では、参考までにセルの結合を実現するためのel-tableの具体的なコードを共有していま...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...

MySQL が group by をサポートしない場合の解決策の概要

MySQL 5.7.x の最新バージョンをダウンロードしてインストールしました。デフォルトでは、on...

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

MySQL RouterはMySQLの読み取りと書き込みの分離を実装します

目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...

Vueは単純なランダムロールコールを実行します

目次レイアウト部分: <div id="アプリ"> <p>...

CSS3 @mediaの基本的な使い方のまとめ

//文法: @media mediatype and | not | only (メディア機能) ...