Reputation: 81
Need rejected and accepted count between (Date1, Date2)
UserName Status Datetime
---------------------------------
User1 accepted 2018-06-02
User2 rejected 2019-07-20
User3 accepted 2019-09-20
User4 rejected 2019-09-20
User5 rejected 2019-09-15
User6 accepted 2019-10-22
User7 accepted 2019-10-23
UserName Status Datetime
---------------------------------
User1 accepted 2018-06-02
User2 rejected 2019-07-20
User3 accepted 2019-09-20
User4 rejected 2019-09-20
User5 rejected 2019-09-15
User6 accepted 2019-10-22
User7 accepted 2019-10-23
if date between (2018-05-01) to (2019-10-30)
Year Month Accepted Rejected
---------------------------------------------
2018 June 1 0
2019 July 0 1
2019 September 1 2
2019 October 2 0
if date between (2019-05-01) to (2019-10-30)
Year Month Accepted Rejected
---------------------------------------------
2019 July 0 1
2019 September 1 2
2019 October 2 0
Upvotes: 0
Views: 196
Reputation:
You can use conditional aggregation for that:
select to_char(datetime, 'yyyy-mm') as year_month,
count(*) filter (where status = 'accepted') as accepted,
count(*) filter (where status = 'rejected') as rejected
from the_table
where datetime between date '2018-05-01' and date '2019-10-30'
group by to_char(datetime, 'yyyy-mm')
order by 1;
Note that if "datetime" is indeed a timestamp
column (rather than a date
as shown) you should avoid between
and use explicit >=
and <
operators:
where datetime >= timestamp '2018-05-01 00:00:00'
datetime < timestamp '2019-10-31 00:00:00' -- one day after the intended end date
Upvotes: 2