我想为我的每个员工找到最大的销售额(并显示员工的姓名)。在 MySQL 中,它非常简单:
select *
from employee, sale
where employee.id = sale.employee_id
group by employee_id
order by sale.total desc
这几乎符合人们的预期,它将返回员工列表,并最终返回员工行中最大的销售记录。
但是,当使用 group by 子句时,Oracle 不允许您返回不是 group by 表达式的列。这会让我在 Oracle 中的 MySQL 中做的事情“不可能”吗?或者有什么解决方法?我想我可以执行某种子查询,但不确定是否有另一种方法来做到这一点,构造起来不会那么复杂。
最佳答案
摆脱你的 select *
并将其替换为您需要的列,然后按所有“未处理”列进行分组。
你最终会得到类似的东西:
select employee.id, employee.name, max(sale.total)
from employee, sale
where employee.id = sale.employee_id
group by employee.id, employee.name
order by max(sale.total) desc
这很痛苦 - 我之前不得不多次这样做 - 但只需将所有相关列添加到您的组中
关于sql - Oracle SQL 查询 : Getting Largest Sale for Employee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1486771/