SQL implementation of LeetCode (184. The highest salary in the department)

SQL implementation of LeetCode (184. The highest salary in the department)

[LeetCode] 184. Department Highest Salary

The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
+----+-------+--------+--------------+

The Department table holds all departments of the company.

+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+

Write a SQL query to find employees who have the highest salary in each of the departments. For the above tables, Max has the highest salary in the IT department and Henry has the highest salary in the Sales department.

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| Sales | Henry | 80000 |
+------------+----------+--------+

This question gives us two tables, Employee and Department, and asks us to find the person with the highest salary in the department. In fact, this question is a combination of Second Highest Salary and Combine Two Tables . We need to combine the two tables and find the highest salary. So we first intersect the two tables, then mark the required columns in the result table, and then find the highest salary. We use the Max keyword to achieve this. See the code below:

Solution 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);

We can also use Where to join the two tables without using the Join keyword, and then find the highest salary in the same way as above:

Solution 2:

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

The following method does not use the Max keyword, but uses the >= symbol, which achieves the same effect as the Max keyword. See the code below:

Solution 3:

SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM Employee e, Department d
WHERE e.DepartmentId = d.Id AND e.Salary >= ALL (SELECT Salary FROM Employee e2 WHERE e2.DepartmentId = d.Id);

Similar topics:

Second Highest Salary

Combine Two Tables

This is the end of this article about SQL implementation of LeetCode (184. The highest salary in the department). For more relevant content about SQL implementation of the highest salary in the department, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • SQL implementation of LeetCode (196. Delete duplicate mailboxes)
  • SQL implementation LeetCode (185. Top three highest salaries in the department)
  • SQL implementation of LeetCode (183. Customers who have never placed an order)
  • SQL implementation of LeetCode (182. Duplicate mailboxes)
  • SQL implementation of LeetCode (181. Employees earn more than managers)
  • SQL implements LeetCode (180. Continuous numbers)
  • C++ implementation of LeetCode (179. Maximum number of combinations)
  • SQL implementation of LeetCode (197. Rising temperature)

<<:  How to match the size of text in web design: small text, big experience

>>:  Website background music implementation method

Recommend

Solve the problem of ifconfig being unavailable in docker

Recently, when I was learning docker, I found tha...

Detailed explanation of MySQL binlog usage

binlog is a binary log file that records all DML ...

IIS7 IIS8 http automatically jumps to HTTPS (port 80 jumps to port 443)

IIS7 needs to confirm whether the "URL REWRI...

MySQL implements an example method of logging in without a password

Specific method: Step 1: Stop the mysql service /...

Common ways to optimize Docker image size

The Docker images we usually build are usually la...

Sitemesh tutorial - page decoration technology principles and applications

1. Basic Concepts 1. Sitemesh is a page decoratio...

Is it necessary to create a separate index for the MySQL partition field column?

Preface Everyone knows that the partition field m...

A possible bug when MySQL executes the sum function on the window function

When using MySql's window function to collect...

Solve the problem of setting Chinese language pack for Docker container

If you use docker search centos in Docker Use doc...

How to insert batch data into MySQL database under Node.js

In the project (nodejs), multiple data need to be...

How to use DQL commands to query data in MySQL

In this article, the blogger will take you to lea...

Gradient slide effect implemented by CSS3

Achieve results Code html <div class="css...

Detailed code examples of seven methods for vertical centering with CSS

When we edit a layout, we usually use horizontal ...