在oracle SQL中,如何根据条件计算记录数

pyds_learner

我有下面的结构表:

Col2
A
A
B
B
E
E

我想要SQL查询向我输出以下内容:

Internal    4
External    2
Total   6

逻辑:如果Col2中的值为A,B,则应将其汇总为Internal,如果为E,则应将其汇总为External。

Marmite轰炸机

要使用DECODE映射列值,只需提供列的原始值和新值的列表即可。

select decode(col2,'A','Internal','B','Internal','E','External') col from tab

要计算总数,您不需要重新扫描整个表(性能下降到一半),而是使用逐个汇总来计算总数

with t as ( 
select decode(col2,'A','Internal','B','Internal','E','External') col from tab)
select nvl(col,'Total') col, count(*) cnt
from t
group by rollup (col)

结果

COL             CNT
-------- ----------
External          2
Internal          4
Total             6

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章