sql - 如何按两列分组?
问题描述
桌子:
询问:
SELECT cintitule , cperiode , SUM(nmontant) FROM tsal_mois
WHERE cperiode between "201901" AND "201912"
GROUP BY cperiode, cintitule
结果:
问题:
我想按“cperiode”列分组。
例如:我想要的结果
"date"
ccodrub cintitule all-cperiode sum_nmontant
001 Salaire de Base 2019 (I want all
001 Salaire de Base 2018 sum of all in 2019)
(I want all
the years
grouped by)
" the dates are by months
I want it by year"
编辑 这个查询是我需要的:
SELECT ccodrub, cintitule , SUM(nmontant) FROM tsal_mois WHERE cperiode between "201901" AND "201912" GROUP BY cintitule , ccodrub
谢谢你
解决方案
您可以使用字符串(或数学)函数来提取年份。假设这cperiode
是一个字符串:
SELECT cintitule , LEFT(cperiode, 4) as year, SUM(nmontant)
FROM tsal_mois
WHERE cperiode between '201901"'AND '201912'
GROUP BY cintitule, LEFT(cperiode, 4);
大多数数据库都支持LEFT()
, 对于那些不使用相应功能的人。
如果cperiod
实际上是一个数字,则FLOOR(cperiod/100)
改为使用。
推荐阅读
- .net - 使用 iText7 pdfHTML 将 CSS 应用于 HTML 字符串
- c++ - 如何在 Elixir 中调用递归函数并行
- python - 用零替换numpy数组中低于阈值的数字
- c - 尝试链接 libgcc 时编译 gcc 失败
- mysql - 在报告中选择并添加按月和年分隔的记录
- python-3.x - PyGitHub:理解速率限制和管理请求数量
- amazon-dynamodb - 扫描嵌套对象数组 - DynamoDB
- python - 根据引用其他 2 列计算数据框列的中位数
- amazon-web-services - 如何使 AWS EC2 实例只能通过私有 IP 地址访问?
- php - Composer - 在新包中设置自动加载