Oracle SQL查询:为员工获得最大的销售额

前端之家收集整理的这篇文章主要介绍了Oracle SQL查询:为员工获得最大的销售额前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为每位员工找到最大的销售(并显示员工的姓名).在 MySQL中,它非常简单:

select * 
  from employee,sale 
  where employee.id = sale.employee_id 
  group by employee_id 
  order by sale.total desc

这几乎与人们所期望的一样,它会返回一份员工列表,最终返回员工行中最大的销售记录.

但是,当使用group by子句时,Oracle不允许您返回不按表达式分组的列.这样做可以让我在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

这是一个痛苦 – 我以前必须多次这样做 – 但只需将所有相关列添加到您的组中

猜你在找的Oracle相关文章