有一个表likes

like_user_id | like_post_id | like_date
----------------------------------------
1            | 2            | 1399274149
5            | 2            | 1399271149
....
1            | 3            | 1399270129


我需要进行一个SELECT查询,并根据1天,7天,1个月,1年的时间段对特定like_post_id的记录进行计数。

结果必须是这样的:

period  | total
---------------
1_day   | 2
7_days  | 31
1_month | 87
1 year  | 141


可能吗?

谢谢。

最佳答案

我已经为Oracle语法创建了查询,请根据您的数据库进行更改

select '1_Day' as period , count(*) as Total
from likes
where like_date>(sysdate-1)
union
select '7_days'  , count(*)
from likes
where like_date>(sysdate-7)
union
select '1_month'  , count(*)
from likes
where like_date>(sysdate-30)
union
select '1 year'  , count(*)
from likes
where like_date>(sysdate-365)


这里的想法是获取单个期间的单个子查询,然后在与过滤器匹配的位置应用过滤器。

关于mysql - 是否可以在mysql中按几个不同的日期段进行分组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23518826/

10-16 00:29