Mysql 使用别名在having子句中使用子查询
我有一个Mysql查询,在哪里 其中我有一个如下表(示例数据) 现在我想找出工资总额最高的员工人数 (工资总额=月*工资) 我的问题是这样的 子查询:Mysql 使用别名在having子句中使用子查询,mysql,sql,Mysql,Sql,我有一个Mysql查询,在哪里 其中我有一个如下表(示例数据) 现在我想找出工资总额最高的员工人数 (工资总额=月*工资) 我的问题是这样的 子查询: ((select max(mon_sal.mc) as max_mc from ( select months*salary as mc from employee group by employee_id) as mon_sal) as max_mon_sal) //找到总工资的最大值 现在我的问题是我需要找到最高工资的人数 select
((select max(mon_sal.mc) as max_mc from (
select months*salary as mc from employee group by employee_id) as mon_sal)
as max_mon_sal)
//找到总工资的最大值
现在我的问题是我需要找到最高工资的人数
select max_mon_sal.max_mc,name
from employee group by employee_id
having salary=max_mon_sal.max_mc from (
(select max(mon_sal.mc) as max_mc from
(select months*salary as mc from employee group by employee_id) as mon_sal)
as max_mon_sal)
它的显示错误。我在使用max\u mon\u sal别名时遇到问题。请提出建议。我不确定这是否是我们正在寻找的,甚至更好的解决方案是使用临时表:
SELECT Employee.employee_id,SUM(MONTHs * salary)
FROM Employee,
(
SELECT MAX(total) value FROM (
SELECT SUM(MONTHs * salary) as total
FROM Employee
GROUP BY employee_id
) T
) D
GROUP BY Employee.employee_id,D.value
HAVING SUM(MONTHs * salary) = D.value
我不确定这是否是我们正在寻找的,甚至更好的解决方案是使用临时表:
SELECT Employee.employee_id,SUM(MONTHs * salary)
FROM Employee,
(
SELECT MAX(total) value FROM (
SELECT SUM(MONTHs * salary) as total
FROM Employee
GROUP BY employee_id
) T
) D
GROUP BY Employee.employee_id,D.value
HAVING SUM(MONTHs * salary) = D.value
您可以简单地使用:
select count(*)
from employee
where months * salary = (
select max(months * salary)
from employee
);
您可以简单地使用:
select count(*)
from employee
where months * salary = (
select max(months * salary)
from employee
);
我删除了不兼容的数据库标记。可以为您正在使用的数据库添加标记。tanx@GordonLinoffI删除了不兼容的数据库标记。请随意为您正在使用的数据库添加标记。tanx@GordonLinofftanx用于您的建议,但由于某些限制,我无法使用临时表。此现有查询的问题是(我的子查询用于查找最高工资,而我的主查询希望与该最高工资进行比较,并查找与之匹配的工资计数。我不知道如何在使用alias的Having子句中进行比较name@Ramgopal“某些限制”?需要详细说明吗?@这不是技术性的,我正在准备一个编程竞赛,我不能创建临时表,只是我不能创建和删除it@Strawberry请您在having子句中解释如何将列与子查询别名进行比较。很抱歉,您在这里使用的是子查询,而不是临时表。另外,您确实在外部查询中不需要GROUP BY。Slaakso的答案是way cleaner.tanx,这是您的建议,但由于某些限制,我无法使用临时表。我现有的查询的问题是(我的子查询用于查找最高工资,而我的主查询希望与该最高工资进行比较,并查找与之匹配的工资计数。我不知道如何在使用alias的Having子句中进行比较name@Ramgopal“某些限制”?需要详细说明吗?@这不是技术性的,我正在准备一个编程竞赛,我不能创建临时表,只是我不能创建和删除it@Strawberry请您在having子句中解释如何将列与子查询别名进行比较。很抱歉,您在这里使用的是子查询,而不是临时表。另外,您确实在外部查询中不需要GROUP BY。Slaakso的答案更简洁。我希望我们不能在where条件中使用聚合函数在子查询中使用聚合函数是完全可以的。我希望我们不能在where条件中使用聚合函数在子查询中使用聚合函数是完全可以的