select array_agg(activity) filter (where date = current_date) as today,
array_agg(activity) filter (where date <> current_date) as rest_of_month
from t
where date_trunc('month', date) = current_date;
select count(case when d.date = :p_query_date then 0 end) day_count
,count(0) month_count
from d -- your table name
where d.date between date_trunc('month', :p_query_date)
and date_trunc('month', :p_query_date + interval '1 month') - interval '1 day'
3条答案
按热度按时间zxlwwiss1#
您可以编写子查询来获取单行数据,
是的,你可以按日期分组来计算今天的月数。希望这能给你一些继续下去的感觉。
b91juud32#
这就是你想要的吗?
它使用数组,因此可以处理任意一个类别中的多个活动。
k0pti3hp3#
假设您希望基于特定日期进行查询-
上面的查询假设您在d.date列上定义了索引。如果您在date\u trunc('month',date'上定义了索引,则查询条件可以简化为:
date\u trunc('month',d.date)=日期\u trunc('month',:p\u查询\u日期)