SQL - GROUPBY查询

时间:2018-05-16 16:41:45

标签: sql group-by

我的数据看起来像这样。有不同的存储桶,有多个ID,其中一些ID有数据,有些则没有。对于例如A6,L1和L2都在同一个桶中(Bucket1),A6有数据但L1和L2不在。

enter image description here

我尝试编写一个查询,该查询汇总了存储桶中具有数据(TRUE卷)的不同ID数,并且还总结了不具有数据的ID数(FALSE音量) ,然后添加2个卷以创建总体积。您可以在下面看到以下内容:

enter image description here

这就是我现在所拥有的:

select 
Buckets, 
case 
    when Date is not null then count(distinct Data)
    end as TRUE_Vol,
case 
    when Date is null then 0 
    end as FALSE_Vol

from #temptable
group by Buckets, Date, Data

但是这段代码没有给我我想要的东西。我想我需要对它进行不同的分组,但我无法解决这个问题。任何帮助表示赞赏。

谢谢

2 个答案:

答案 0 :(得分:0)

使用条件聚合时,case进入聚合函数。

根据您的描述,您需要:

select Buckets, 
       count(distinct case when Date is not null then Data end) as TRUE_Vol,
       sum(case when Date is null then 0 else 1 end) as FALSE_Vol
from #temptable
group by Buckets;

答案 1 :(得分:0)

您可以使用

选择性组
select 
Buckets, 
sum ( case  when Date is not null then 1 else 0 end) as TRUE_Vol,
sum ( case  when Date is null then 1 else 0 end) as FALSE_Vol

from #temptable
group by Buckets