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.