sql - 使用 case 语句时的 Group By 子句问题
问题描述
我试图总结每个不同发件人全年的数量,并将年份作为字段。我正在使用 case 语句来执行此操作。
select distinct sender,
case
when extract(month from (month)) = 1
then sum(volume)
end as January,
case
when extract(month from (month)) = 2
then sum(volume)
end as February,
case
when extract(month from (month)) = 3
then sum(volume)
end as March
from [lifetime_data]
group by 1
当我运行这个时,我收到一个错误,要求我按月分组,月份不是我选择的列之一,我只在我的情况下使用它......我该如何解决这个问题?
解决方案
我认为你想要条件聚合——case
表达式是一个参数sum()
:
select sender,
sum(case when extract(month from (month)) = 1 then volume end) as January,
sum(case when extract(month from (month)) = 2 then volume end) as February,
sum(case when extract(month from (month)) = 3 then volume end) as March
from [lifetime_data]
group by 1
推荐阅读
- c++ - 临时对象的 Clang 6 中的模板参数推导被破坏
- django - 有什么方法可以覆盖 Django 中的外键删除保护?
- r - 根据具有不同行数的另一个数据框的值将值分配给一个数据框的列
- python - 使用 matplotlib 颜色图进行颜色查找
- laravel - 验证错误 - 函数名称必须是字符串
- mysql - 将触发器从 MySQL 迁移到 PostgreSQL
- react-native - 在升级 react-native 版本时更新应用程序的 project.pbxproj 文件的推荐方法是什么
- arrays - 作为 React 子节点,你如何访问带有键的对象?- 反应原生
- python - 检查项目符号是否在列表中
- javascript - 当 ID 是数字时,getElementById 不起作用