sql - 如何在新列中输出每年的结果?
问题描述
此代码在一行中显示数据,但我需要在单独的列中显示每年的结果。你可以帮帮我吗?
SELECT
EXTRACT (YEAR FROM s.time_id)::int,
p.prod_subcategory,
sum(s.amount_sold)
FROM sales s
JOIN products p ON p.prod_id = s.prod_id
WHERE EXTRACT (YEAR FROM s.time_id) IN (1998,1999,2001)
GROUP BY EXTRACT (YEAR FROM s.time_id)::int, p.prod_subcategory
ORDER BY date_part;
解决方案
使用条件聚合:
SELECT p.prod_subcategory,
SUM(s.amount_sold) FILTER (WHERE EXTRACT(YEAR FROM s.time_id) = 2000) as sales_2000,
SUM(s.amount_sold) FILTER (WHERE EXTRACT(YEAR FROM s.time_id) = 1999) as sales_1999,
SUM(s.amount_sold) FILTER (WHERE EXTRACT(YEAR FROM s.time_id) = 1998) as sales_1998
FROM sales s JOIN
products p
ON p.prod_id = s.prod_id
WHERE EXTRACT (YEAR FROM s.time_id) IN (1998,1999,2001)
GROUP BY p.prod_subcategory;
推荐阅读
- c# - ASP.NET Core 3.1 托管服务针对给定计划运行多次(它应该每天运行一次)
- powershell - 使用 Powershell 重新组合同一数组中的常用项值
- python - 如何遍历 ManyToManyField 中的 Django 模型项
- android - 找不到包含 /data/data/my_package/cache/share_video_1610748162883.mp4 的已配置根目录
- azure - 查询以获取另一个引用的所有 Cosmos DB 文档
- javascript - 当 csrf 设置为 auto 时,如何使用带有 codeigniter 4 的 jquery 验证库检查现有数据?
- r - 如何将自由文本条目作为图例添加到 ggplot?
- ssis - 优先约束在SSIS中评估为真(或假)是什么意思
- python - 分解python中的列表理解
- mysql - mySQL 删除唯一键约束