ora 中的SQL语句:group by后的条件对查询结果有何影响?

举个例子说吧:
select barcode,sum(qty) from tab_c group by cID having sum(qty) >3;
select barcode,reason_code,sum(qty) from tab_c group by cID,reason_code having sum(qty) >3;
这两个句子查询到的结果不一样。但是去不清楚为什么。请大家指教。

如果有group子句,则将结果表按group中指定的列进行分组,该属性列值相等的元组为一组,通常会在每组中作用集函数。
接你上述的例子,假定先将having条件去除;
第一条语句是按barcode字段分组,进行求和;
第二条语句是按barcode,reason_code进行了分组,进行求和统计查询,这时的结果记录与第一条就已经不一样。
而having条件的作用限定分组求和记录值要大于3,在两条语句中作用是一样的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-07
查询语句很清楚了
1 查询以cID做为分组的 累加qty列的值,过滤条件是 累加值大于 3
2 查询以cID和reason_code 作为分组的列 ,累加qty的值,过滤条件是累加值 大于3

这2个查询结果肯定不一样的,因为分组不一样,第一个 只要 cID 不同就可以看做是不同的分组了,第二个 是cID 或者 reson_code不同 就会视为不同的分组
第2个回答  2013-03-07
上面这两个sql语句能执行???
group by 就是分组 不过在select 后面的有的列名才能 放在group by后面,
上面你的第一个sql语句是按照cid分组
第二个是先按照cid分组,在按照reason_code分组.
第3个回答  2013-03-07
1 个是按cID分组,1个是按照cID,reason_code分组..两个能一样吗?
相似回答