我有一个使用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
,如果它具有一致格式的数据。