sql - Oracle SQL 查询 : Getting Largest Sale for Employee

标签 sql oracle plsql

我想为我的每个员工找到最大的销售额(并显示员工的姓名)。在 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/

相关文章:

sql - 查询 SQL Server 2012 数据库时出现初始错误

mysql - 解锁 Oracle 表

Oracle 10 - 查询短路评估

sql - 如何在 pl/sql block 中给出本地文件系统的相对路径

sql - 无法基于 JOINS 执行连接两个表

MySql:按项目数然后按内容排序列表

c# - 从 asp.net 前端添加 sql 记录的最佳实践?

创建自动编号的 Oracle 触发器

sql - 等式查询

java - JDBC中如何调用存储过程