给定表格
| userid | active | anonymous |
| 1 | t | f |
| 2 | f | f |
| 3 | f | t |
我需要得到:
- 用户数
- 'active' = true 的用户数
- “活跃”的用户数 = false
- “匿名”的用户数 = true
- “匿名”的用户数 = false
与单个查询。
至于现在,我只提出了使用union的解决方案:
SELECT count(*) FROM mytable
UNION ALL
SELECT count(*) FROM mytable where active
UNION ALL
SELECT count(*) FROM mytable where anonymous
所以我可以取第一个数字并通过简单的扣除找到非活跃和非匿名用户。
有什么方法可以摆脱联合并计算与这些简单条件匹配的记录数,并在PostgreSQL 9中使用一些神奇而高效的查询?