sql - 使用 Sum() 和 count() 函数的 SQL 查询
问题描述
我正在尝试使用 SUM 函数在 PostgresQL 中进行查询,以获取总共 3 种不同的行类型(根、动态、测试)。我第一次尝试使用 Sum() 函数,第二次尝试使用 Count() 函数;可悲的是,两者都没有工作。我预计会出现语法错误(因为我是使用 SQL 的初学者),但我不确定它是什么以及如何修复它!
Sum() 函数的第一次尝试:
SELECT
sum(case when "exerciseType" = 'ROOT') as total_root_exercises,
sum(case when "exerciseType" = 'DYNAMIC') as total_dynamic_exercises,
sum(case when "exerciseType" = 'TEST') as total_test_exercises
FROM exer
GROUP BY "exerciseType"
第二次尝试使用 Count() 函数:
select
count(*) as total_root_exercises
where "exerciseType" = 'ROOT',
count(*) as total_Dynamic_exercises
where "exerciseType" in('DYNAMIC'),
count(*) as total_test_exercises
where "exerciseType" in('TEST')
FROM exer
我能得到这方面的帮助吗?谢谢 :)
解决方案
您可以filter
用于条件聚合:
SELECT count(*) filter (where "exerciseType" = 'ROOT') as total_root_exercises,
count(*) filter (where "exerciseType" = 'DYNAMIC') as total_dynamic_exercises,
count(*) filter (where "exerciseType" = 'TEST') as total_test_exercises
FROM exer ;
您不需要外部聚合,尽管您可以更简单地以行而不是列的形式返回结果:
select "exerciseType", count(*)
from exer
group by "exerciseType";
注意:我强烈反对使用转义的列名。定义表时不要使用双引号,也不要在查询中使用它们。
推荐阅读
- r - 如何绘制和覆盖多个栅格的密度图?
- c# - Autofac 解析匹配LifetimeScope 集合
- python - 如何从用户那里获取类的名称,然后创建具有相同名称的类
- javascript - 更改字体大小时在文本区域内居中文本
- c++ - 使用 minGW 和 VSCode 运行简单的 C++ 程序时找不到 libstdc++-6.dll
- python - 如何按值字符串打印嵌套字典中的键值对
- javascript - ML5,情绪分析:未捕获(承诺中)类型错误:无法读取未定义的属性“the”
- vba - 俄语单词的计数频率
- javascript - 需要帮助以减少代码(我不是专家)
- c - 错误:多重定义和第一次在这里定义