如何在一个oracle SQL中计算每个标记的已使用和未使用的数量

时间:2017-04-18 01:27:33

标签: sql oracle join

我有一个名为“USAGE”的数据库表,其中包含以下列:

1)“USAGE_NAME”,其可能的值为:A,B。

2)“TAG”,它的可能值是:a)如果“USAGE_NAME”是A,它可以是A1,A2或A3; b)如果USAGE_NAME是B,则为B1,B2或B3。

3)“USED”,它可以是空值(USED)或非空值(USED)。

我希望每个USAGE_NAME都有一个SQL可以返回每个TAG的已使用和未使用的COUNT。

我实施的方式过于冗长,有人有一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

tag分组并使用条件聚合

select tag, 
       sum(case when used is null then 1 else 0 end) as unused_cnt,
       count(used) as used_cnt,
       count(*) as total_cnt
from usage
group by tag

由于count()仅计算非空值,因此您可以使用它来获取已使用的计数。