sql - 您如何计算临时表中 sum 函数的平均值?
问题描述
我创建了一个临时表,其中列出了每个客户的发票,以及支付发票所需的天数。一个客户可以有多个发票。
而不是这个,我只希望临时表列出每个客户一次,以及支付所有发票所需的平均天数。
任何有关如何做到这一点的提示将不胜感激。
谢谢
select
c.client_code,
b.bill_num,
b.bill_date,
ba.TRAN_DATE,
sum(datediff(Day,b.BILL_DATE, ba.TRAN_DATE)) as Days_To_Pay
into #tempG1
from blt_bill b
left outer join blt_billm bm on b.tran_uno = bm.bill_tran_uno
left outer join BLT_BILL_AMT ba on bm.BILLM_UNO = ba.BILLM_UNO
left outer join hbm_matter m on bm.matter_uno = m.matter_uno
left outer join hbm_client c on m.client_uno = c.client_uno
where b.total_bill_amt > 0.0
and bm.ar_status NOT IN ('P','X')
and ba.TRAN_TYPE in ('CR','crx')
group by c.client_code,b.bill_num,b.bill_date,ba.TRAN_DATE
select * from #tempG1
Drop Table #tempG1
解决方案
这听起来像一个简单的聚合:
select c.client_code, avg(datediff(Day, b.BILL_DATE, ba.TRAN_DATE)) as Days_To_Pay
from blt_bill b join
blt_billm bm
on b.tran_uno = bm.bill_tran_uno join
BLT_BILL_AMT ba
on bm.BILLM_UNO = ba.BILLM_UNO join
hbm_matter m on bm.matter_uno = m.matter_uno join
hbm_client c
on m.client_uno = c.client_uno
where b.total_bill_amt > 0.0 and
bm.ar_status not in ('P', 'X') and
ba.TRAN_TYPE in ('CR', 'crx')
group by c.client_code;
请注意,您不需要外部连接。无论如何,该where
子句将它们中的大多数变成了s。inner join
另外,如果您按客户端代码进行聚合,那么您可能想要一个非NULL
值。
推荐阅读
- ionic-framework - 如何在 Ionic Web 应用程序中实现视频通话?
- python - 如何用该组的平均值填充非整数,并将所有 NaN 组替换为 0
- sql - 从表中检索数据
- git - 从跟踪远程分支更新本地分支而不丢失本地分支中的更改
- laravel - 访客用户的门禁能力定义不工作
- javascript - Vue - 如何为文本区域和输入字段创建交互式功能?
- javascript - 为什么将新节点添加到链表后,prev 节点设置为 Circular 而不是 _Node?
- c - 确定递归函数的复杂度
- java - Getting the exact timestamp from oracle database using jdbc
- docker - Facing issues while updating BotiumBox 2.5.0 community edition