我想找到每个员工的最大销售额(并显示员工的姓名)。在 MySQL 中,这非常简单:
select *
from employee, sale
where employee.id = sale.employee_id
group by employee_id
order by sale.total desc
Run Code Online (Sandbox Code Playgroud)
这几乎符合人们的预期,它将返回一个员工列表,并最终返回包含员工行的最大销售记录。
但是,当使用 group by 子句时,Oracle 不允许返回不是 group by 表达式的列。这会让我在 MySQL 中所做的事情在 Oracle 中“不可能”吗?或者有一些解决方法吗?我想我可以执行某种子查询,但不确定是否有另一种方法可以做到这一点,而且构造起来不会那么复杂。
删除您的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
Run Code Online (Sandbox Code Playgroud)
这很痛苦 - 我以前不得不这样做很多次 - 但只需将所有相关列添加到您的组中即可
| 归档时间: |
|
| 查看次数: |
4461 次 |
| 最近记录: |