SQL以以下格式打印结果



我有一个使用AWS Athena的应用程序。我有2个表即事件和事件事务。Events表包含事件信息,event_transactions包含单个事件,还有一个列event_date,它告诉事件发生的日期。

我需要计算最近1个月间隔,最近1周间隔和从今天开始的最后1天的每个事件的事件计数。

格式:

event_name, daily_count, weekly_count, monthly_count

我需要在同一行中显示每个事件的所有3个计数。

要计算weekly_count,我使用下面的查询:

select event_name, count(*) as weekly_count from event_transactions where event_name in ('ABC','XYZ')
and (event_date >= CAST(current_date - interval '7' day as varchar)) AND (event_date <= CAST(current_date - interval '1' day as varchar)) 
group by 1

输出:

event_name.    weekly_count
ABC.           23
XYZ.           14

我怎么能写一个SQL查询,将打印所有3计数在一个单独的行?

使用count_if。像这样:

select event_name, 
count_if(event_date >= CAST(current_date - interval '7' day as varchar) AND event_date <= CAST(current_date - interval '1' day as varchar)) as weekly_count ,
... -- rest of the counts
from event_transactions 
where event_name in ('ABC','XYZ')
group by 1

我还建议查看between范围操作符,并在event_date上使用date_parse,如果它具有一致格式的数据。

最新更新