This is my database table: orders
id | user_id | order_id | datetime |
---|---|---|---|
1 | 1 | 1245652 | 1607444387 |
2 | 2 | 3265784 | 1607357987 |
3 | 1 | 9521014 | 1607357927 |
4 | 3 | 1036951 | 1607317987 |
I want to have a list of users that place at least one order every month. how i can do that?
Advertisement
Answer
You can do something like this:
select user_id from orders o where datetime >= :from and datetime < :to group by user_id having count(distinct extract(year_month from from_unixtime(datetime))) = :num_months
:from
, :to
, and :num_months
indicate parameters. The first two define the date range you want. The third indicates the number of months that constitute “every month” in the time frame.