gpt4 book ai didi

sql - 按多个条件分组

转载 作者:行者123 更新时间:2023-11-29 12:33:47 26 4
gpt4 key购买 nike

给定表格

| userid | active | anonymous |
| 1 | t | f |
| 2 | f | f |
| 3 | f | t |

我需要得到:

  • 用户数
  • 'active' = true 的用户数
  • 'active' = false 的用户数
  • 'anonymous' = 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 中,有什么方法可以摆脱并集并计算与这些简单条件匹配的记录数,以及一些神奇而高效的查询?

最佳答案

您可以将聚合函数与 CASE 一起使用,以在单独的列中获取结果:

select 
count(*) TotalUsers,
sum(case when active = 't' then 1 else 0 end) TotalActiveTrue,
sum(case when active = 'f' then 1 else 0 end) TotalActiveFalse,
sum(case when anonymous = 't' then 1 else 0 end) TotalAnonTrue,
sum(case when anonymous = 'f' then 1 else 0 end) TotalAnonFalse
from mytable;

参见 SQL Fiddle with Demo

关于sql - 按多个条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com