sql - oracle SQL中,如何根据条件统计记录数

标签 sql oracle

我的表格具有以下结构:

Col2
A
A
B
B
E
E

我希望 SQL 查询输出以下内容:

Internal    4
External    2
Total   6

逻辑:如果Col2中的值为A、B则应汇总为内部,如果为E则应汇总为外部。

最佳答案

要映射列值,请使用 DECODE ,简单地提供列的原始值和新值的列表。

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

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

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

关于sql - oracle SQL中,如何根据条件统计记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961702/

相关文章:

php - SQL语句给我一个错误,虽然看起来很好

MYSQL Left Join on multiple table 但只选择最近的行

sql - SQL Server 2005中获取动态SQL返回的临时表,并解析

mysql - 基于值的 ORDER BY 子句 - MySQL

c# - 如何通过 Entity 框架自动为 Oracle 数据库生成标识?

oracle - solr clobtransformer

mysql - 选择第一行但仅当有多个匹配项时才选择?

sql - 查询以获取分层数据及其级别编号

java - 在java程序中,如何知道存储过程运行正确或引发一些错误?

xml - 甲骨文 10g : Reading XML values from Clob using XMLSequence and ExtractValue