oracle sql里有多个max时数据是怎么查的

如果
select max(aaa),bbb,ccc from x
上面这条sql中bbb和ccc 是max后这一条数据中的bbb和ccc的值么?
select max(aaa),max(bbb),ccc from x
那这两个max呢? 最大值怎么取的? 如果aaa取最大 那bbb呢? 如果bbb也是最大 那取的就不是同一条记录了啊?? 我很费解这个请高手指点
select max(aaa),max(bbb),max(ccc) from x
都是max呢?

我如果一个sql left join 一个分组的sql 为什么取不到正确值?
select * from left join (select * from xxx where....group by ....)
则必须写成 select * from x left join (select * from (select max(aaa),bbb from xxx where... group by .....) where ....)这种形式
我比较费解 望高手指点迷津
额 我想了下 前两种情况要分组 那第三种貌似不用分组的 我要知道的是第三种情况

1. select max(aaa),bbb,ccc from x group by bbb,ccc
这个语法是找出bbb, ccc在相同的情况下,aaa的最大值。
2. select max(aaa),max(bbb),ccc from x group by ccc
这个语法是找出ccc相同时的aaa的最大值和bbb的最大值。

举例
aaa bbb ccc
5 4 4
6 4 4
5 6 4
5 5 7

这时执行1语句,得到的结果是
max(aaa) bbb ccc
6 4 4
5 6 4
5 5 7
执行2语句,得到的结果是
aaa max(bbb) max(ccc)
5 6 7
6 4 4
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-25
select emp.deptno,max(emp.sal) as sal,max(emp.comm)as comm from emp group by emp.deptno;
结果:
deptno sal omm
30 2850 1400
20 3000
10 5000
解释:列出各部门的最高工资和最高提成
不要理解成雇员的最高工资和最高提成

select max(emp.sal) as sal,max(emp.comm)as comm from emp;
sal comm
5000 1400
解释:列出整个公司整个公司的最高工资和最高提成;
不是某雇员的最高工资和最高提成,
也不是某部门的最高工资和最高提成,
是整个公司的最高工资和最高提成

关于连接查询你还没有理解
select * from left join (select * from xxx where....group by ....)
你左边都没有表,你左连接跟谁连接,肯定等不到正确的值
而且报错ORA-00923: 未找到要求的 FROM 关键字
你还是多看看关于连接查询
第2个回答  2010-10-20
分组函数就是按照你给的分组条件来进行取数据,求集合函数值,自己好好理解吧
语法的问题还是自己看手册去找答案吧,每个句子只有一种或最多两三种写法是正确的,这么问的话你问多少回也还是搞不明白。
第3个回答  2010-10-20
表中有主键吗?
相似回答