sql-server 如何在sql中计算两个月之间的加权平均余额

zqdjd7g9  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(97)

如何在SQL中计算不是季末月份的两个月(三月、六月、九月、十二月)的WtdAvgBal,并将值追加到数据集中。
数据集:
| 日期|识别码|平均余额|周期|
| - -|- -|- -|- -|
| 2020年7月31日|一个|五十个|米|
| 2020年7月31日|2个|七十五人|米|
| 2020年7月31日|三个|五十个|米|
| 2020年7月31日|四个|五十个|米|
| 2020年7月31日|五个|五十个|米|
| 2020年8月31日|一个|五十五人|米|
| 2020年8月31日|2个|九十九|米|
| 2020年8月31日|三个|八十个|米|
| 2020年8月31日|四个|七十个|米|
| 2020年8月31日|五个|九十|米|
两个期间的总天数:62天(7月31天,8月31天)
WtdAvgBal的计算步骤是在excel中完成的。
1.创建一个新列以获取每行Bal * day值。
| 日期|识别码|余额|周期|余额x日|
| - -|- -|- -|- -|- -|
| 2020年7月31日|一个|五十个|米|小行星155|
1.将观察到的两个月的总天数相加。(例如,7月和8月为62天)
总天数:62
1.在AvgBal列中使用Excel的sumif公式计算WtdAvg,并将其应用于数据集中最近的月份。
=sumifs(@余额x日,@ID,ID)/ 62
平均余额输出输出:
| 日期|识别码|平均余额|周期|
| - -|- -|- -|- -|
| 2020年8月31日|一个|五十二点五|X轴|
| 2020年8月31日|2个|八十七人|X轴|
| 2020年8月31日|三个|六十五|X轴|
| 2020年8月31日|四个|六十个|X轴|
| 2020年8月31日|五个|七十个|X轴|
将新期间X追加到数据集中
最终输出:
| 日期|识别码|平均余额|周期|
| - -|- -|- -|- -|
| 2020年7月31日|一个|五十个|米|
| 2020年7月31日|2个|七十五人|米|
| 2020年7月31日|三个|五十个|米|
| 2020年7月31日|四个|五十个|米|
| 2020年7月31日|五个|五十个|米|
| 2020年8月31日|一个|五十五人|米|
| 2020年8月31日|2个|九十九|米|
| 2020年8月31日|三个|八十个|米|
| 2020年8月31日|四个|七十个|米|
| 2020年8月31日|五个|九十|米|
| 2020年8月31日|一个|五十二点五|X轴|
| 2020年8月31日|2个|八十七人|X轴|
| 2020年8月31日|三个|六十五|X轴|
| 2020年8月31日|四个|六十个|X轴|
| 2020年8月31日|五个|七十个|X轴|

2hh7jdfx

2hh7jdfx1#

下面的GROUP BY查询将为您提供所需的'X'值

select Date   = max(Date), 
       ID, 
       AvgBal = sum(AvgBal * datepart(day, Date) * 1.0) / sum(datepart(day, Date)),
       Period = 'X'
from   Dataset
group by ID

相关问题