I want to query for a count of a WHERE clause 1 and another count of WHERE clause 2. I have a simplified query result for my booking app:
Token Pending OverDue --------------------------------- ITB001 1 23 IASFSA 8 4 WERSFD 7 1 XVCSFD 2 11 RERSDF 2 7 XVCLKD 1 8 MKB114 1 11
I want to 3 columns in total, first being a field called Token
, second the count of Pending
grouped by renter
, and finally the count Overdue
field grouped also by renter
.
For the queries for Token
and the count of Pending
, I set the clause for any items that has an endDate
(a.k.a due date) later than today’s date by 1 day:
SELECT token, COUNT(renter) FROM booking WHERE endDate >= CAST (current_date + 1 AS timestamp) AND endDate < CAST (current_date + 2 AS timestamp) GROUP BY renter, token
The second column would be a similar query, but the endDate
later than today’s date by 1 day. How do I query the count of Pending
and Overdue
group by renter
at the same time?
Advertisement
Answer
Is this what you want?
SELECT token, COUNT(*), SUM(CASE WHEN enddate = current_date + interval '1 day' THEN 1 ELSE 0 END) FROM booking GROUP BY token;
You have inconsistent database tags, but I’ve used a Postgres-like syntax for the date operations.