我一直让自己很困惑。
有人可以解释一下在什么情况下我想使用 GROUP BY COALESCE 吗?
我的猜测是,如果我想按 B 列(如果 B 不为空)和 A 列有条件地对一组数据进行分组,我会使用它。听起来对吗?
a_h*_*ame 37
随着GROUP BY b,a元组(null, 1),(1,1),(2,1)并(17,1)会在四个不同的组结束了。
随着GROUP BY coalesce(b,a)元组(null,1),(1,1),(2,1)并且(17,1)将在同一个组。
如果您想要“条件”分组,那么是的,带有的版本coalesce可能就是您想要的。
Lei*_*fel 16
这是 a_horse_with_no_name 出色的+1答案的演示。
SQL> WITH Data AS (
2 SELECT level, DECODE(Level,3,NULL,1) A
3 , DECODE(level,2,NULL,4,2,1) B
4 FROM dual connect by level <=5
5 )
6 SELECT A, B, count(*) FROM Data GROUP BY B, A;
A B COUNT(*)
- - ----------
1 1 2
1 1
1 2 1
1 1
SQL> WITH Data AS (
2 SELECT level, DECODE(Level,3,NULL,1) A
3 , DECODE(level,2,NULL,4,2,1) B
4 FROM dual connect by level <=5
5 )
6 SELECT COALESCE(B, A) X, count(*) FROM Data GROUP BY COALESCE(B, A);
X COUNT(*)
- ----------
1 4
2 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7025 次 |
| 最近记录: |