从sql中的主查询中提取子集

vktxenjb  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(301)

在下面的查询中,我将“2017-09-01 00:00:00”和“2017-11-31 23:59:59”之间的活跃客户数作为cust\ U 90,并希望添加另一列以查找“2017-11-01 00:00:00”和“2017-11-31 23:59:59”之间的活跃客户数(整个期间的子集)。

select custid, count(distinct concat(visit1, visit2)) as cust_90
    from test1
    where date_time between "2017-09-01 00:00:00" and "2017-11-31 23:59:59"
    and custid = '234214124'
    group by custid;

样本输出:

CustomerName    cust_90     cust_30
    David           38           15

想知道我是否可以在上面的查询中有一个子查询来查找一个月内活跃的客户。有什么建议都可以。

huwehgph

huwehgph1#

这称为条件聚合,可以使用 case 表情。

select custid, 
count(distinct concat(visit1, visit2) end) as cust_90,
count(distinct case when to_date(date_time)>='2017-11-01' then concat(visit1, visit2) end) as cust_30
from test1
where date_time >= '2017-09-01' and date_time < '2017-12-01'
and custid = '234214124'
group by custid;

相关问题