[英]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.