Given the table like
| userid | active | anonymous | | 1 | t | f | | 2 | f | f | | 3 | f | t | I need to get:
- number of users
- number of users with 'active' = true
- number of users with 'active' = false
- number of users with 'anonymous' = true
- number of users with 'anonymous' = false
with single query.
As for now, I only came out with the solution using union:
SELECT count(*) FROM mytable UNION ALL SELECT count(*) FROM mytable where active UNION ALL SELECT count(*) FROM mytable where anonymous So I can take first number and find non-active and non-anonymous users with simple deduction .
Is there any way to get rid of union and calculate number of records matching these simple conditions with some magic and efficient query in PostgreSQL 9?
NOT NULLconstraints, primary key, data types and other relevant information about your table. Also PostgreSQL 9.? - First and second part of the version number are relevant for major version.