假设有一张“雇员”表:
饭桌雇员
[id|name|department|sex|salary]是否有方法显示男性员工最低薪资等于或高于女性员工最高薪资的所有部门?
这是一项我很难头脑清醒的运动。我知道会有按条款分组,但我还没有真正掌握他们的工作方式。
在MSSQL语法中首选答案,如果有关系的话。
发布于 2015-05-23 19:50:23
我不是通过来验证它的,但是我认为这会给您提供您需要的东西:
WITH cte AS (
SELECT
department,
min(case when sex = 'M' then salary else 10000000000) as MinMaleSalary,
max(case when sex = 'F' then salary else 0) as MaxFemaleSalary
FROM
Employees
GROUP BY department
)
SELECT *
FROM cte
WHERE MinMaleSalary >= MaxFemaleSalary;如果这不起作用,你可以使用第二个cte分别得到Min男性和Max女性,然后再比较他们。
发布于 2015-05-25 06:54:40
下面的语句也可以使用
select
a.*, b.minM
from
(
select
department, max(salary) maxF
from employees
where sex = 'F'
group by department
) A,
(
select
department, min(salary) minM
from employees
where sex = 'M'
group by department
) B
where a.Department = B.department and maxF <= minMhttps://stackoverflow.com/questions/30416873
复制相似问题