mysql - SQL - 修改记录以获取一列中季度的总余额,即使对于 SQL 中的特定季度也是如此
问题描述
我正在处理一个查询,我必须拥有所有季度的总余额。例如
ID NAME Quarter BALANCE
1 RB 202010 500
1 RB 202020 200
2 AD 202020 100
3 KT 202020 800
3 KT 201910 699
我使用 sum(balance) over(partition by ID) TOTAL_BALANCE -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202010 500 700
1 RB 202020 200 700
2 AD 202020 100 100
3 KT 202020 800 1499
3 KT 201910 699 1499
现在我需要一个结果,如果我在 Quarter 上使用过滤器,比如 Quarter = '202020' 它应该给出 -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202020 200 700
2 AD 202020 100 100
3 KT 202020 800 1499
但由于分区功能需要使用 Group by 'Balance' 我得到 -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202020 200 200
2 AD 202020 100 100
3 KT 202020 800 800
解决方案
您可以在子查询中使用窗口函数,然后在外部查询中进行过滤:
select *
from (select t.*, sum(balance) over(partition by id) total_balance from mytable t) t
where quater = '2020'
推荐阅读
- javascript - React - map() 不是函数
- bash - 如何重命名大量文件
- spring - 如何在 RestController 中返回对象列表,每个对象都有一个图像?
- node.js - 我想包含我的 casedata , caselabel 以形成图表
- javascript - 当我按下按钮时,它会给我一个结果,而不是我拥有的所有地图结果。我只得到价值 1
- mysql - Activerecord - 返回日期数组中每个日期的所有子记录?
- python - Python:从纬度和经度值获取海拔
- tableau-api - 如何从下个月提取信息,每个月
- javascript - 为什么我的画布对象在使用实际 url 图像而不是 base64 图像作为源时没有显示任何粒子?
- excel - 将 XML 文件批量导入 Excel 工作簿 (VBA)