我有两张桌子: t_address - >用户地址 t_billing - >使用t_address用户的帐单信息
它们通过t_billing.bil_addressref = t_address.adr_ref链接
在结算表中,我有一个字段 bil_date - >账单发出/发送的日期 bil_paydate - >账单支付日期
我不想确定“最差的付款人”,这意味着那些需要平均最长时间才能支付账单的人。
e.g:
没有。 - bil_date - bil_paydate - adr_ref
1 - 2017-01-01 - 2017-01-10 - 1
2 - 2017-02-01 - 2017-02-10 - 1
3 - 2017-03-01 - 2017-03-05 - 1
4 - 2017-04-01 - 2017-04-05 - 1
5 - 2017-01-01 - 2017-01-30 - 2
6 - 2017-03-01 - 2017-03-30 - 2
...
所以
对于adr 2,平均支付时间为29天
对于adr 1,平均支付时间为6.5天
我希望得到最糟糕的付款人的前五名结果,从最差到最差的订单。
我尝试了几个查询和想法,但没有达到正确的想法:/
有什么建议吗?谢谢,斯蒂芬。
答案 0 :(得分:0)
您可以使用加入,分组依据和限制
select adr_ref, sum( datediff(bil_paydate,bil_date ))/ count(*) my_result
from t_address
inner join t_billing on t_billing.bil_addressref = t_address.adr_ref
group by adr_ref
order by my_result desc
limit 5