sql - 有什么方法可以在同一个 SQL 查询中有多个计数?
问题描述
count()
在同一语句中检查具有不同条件的多个不同的最优雅/有效的方法是什么?鉴于 SQL 的语法,我的查询中的每组WHERE
/HAVING
条件似乎只能有一个 count() 语句。因此,要使用不同的WHERE
/HAVING
条件集,似乎第二个 count(*) 需要在不同的 select 语句中。将其放入与他们相同的结果集中的最佳方法是UNION
什么?有没有其他选择?
理想情况下,我可以做类似的事情:
SELECT count(*) as First, count(*) as Second
FROM table
WHERE --conditionals for First
AND
--conditionals for Second
但我认为这是不可能的。UNION
是对两个单独的查询执行此操作的唯一方法吗?
解决方案
规范方法case
与聚合函数一起使用:
select sum(case when condition1 then 1 else 0 end),
sum(case when condition2 then 1 else 0 end)
SQL 标准方法使用filter
:
select count(*) filter (where condition1),
count(*) filter (where condition2)
推荐阅读
- python-3.x - 在混乱的字符串中查找子字符串
- html - 一旦我添加“透视:1px”,导航栏的位置就不再固定了。我该如何解决?
- git - Netbeans 与 Git 状态不匹配
- azure-data-factory - 如何使用 Azure 数据工厂和自托管运行时读取本地 csv 文件?
- html - 如何使用 asp.net mvc 制作下拉列表以访问 SelectItemList 上的数据?
- scala - 即使在增量编译中,SBT 1.3.8 也会自动更新 SNAPSHOT 版本
- c# - 对匿名类型调用 Equals 取决于创建对象的程序集
- java - 在 Java 中使用替换函数
- plugins - 编码 Minecraft 插件 (Jar)
- python - 如何在不使用 getpass() 的情况下在 python 中屏蔽或隐藏用户输入?