[英]SQL query to find out the name and salary of the employee who received highest salary for each month
SQL在這里你可以看到我寫了下面的代碼,給出了 output 的 id 和薪水,但我想要姓名和薪水
CREATE TABLE salary_data (
id INTEGER NOT NULL,
month INTEGER NOT NULL,
salary INTEGER NOT NULL
);
-- another TABLE
CREATE TABLE emp_data (
id INTEGER NOT NULL,
name TEXT NOT NULL);
-- insert some values
INSERT INTO salary_data VALUES (1, 3,50000);
INSERT INTO salary_data VALUES (2,4,45000);
INSERT INTO salary_data VALUES (3,3,36000);
INSERT INTO salary_data VALUES (4,5,72000);
INSERT INTO salary_data VALUES (1,6,49000);
INSERT INTO salary_data VALUES (4,4,51000);
INSERT INTO salary_data VALUES (2,5,64000);
INSERT INTO emp_data VALUES (1, "RAMESH");
INSERT INTO emp_data VALUES (2, "SURESH");
INSERT INTO emp_data VALUES (3, "NIKHIL");
INSERT INTO emp_data VALUES (4, "RAJEEV");
-- fetch some values
SELECT id,max(salary) FROM salary_data GROUP BY month;
我想我在最后一行中遺漏了一些在這里輸入代碼
我想要這種類型的 output
姓名工資,
拉梅什 50000
像那樣
你邁出了第一步,卻錯過了第二步。 你找到了每月最高的工資。 現在找到收入那么多的員工。
這是一種方法:
select *
from salary_data s
join emp_data e on e.id = s.id -- s.id is a misnomer for s.emp_id
where (s.month, s.salary) in
(
select month, max(salary)
from salary_data
group by month
);
這是另一個(自 MySQL 8 起才有可能):
select *
from
(
select
id as emp_id, month, salary,
max(salary) over (partition by month) as max_salary_for_the_month
from salary_data
) s
join emp_data e on e.id = s.emp_id
where s.salary = s.max_salary_for_the_month
order by s.month;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.