2017-08-04 48 views
1

計費/ paydate的AVG我有兩個表: t_address - >與用戶地址 t_billing - >隨着對t_address用戶的PHP/MySQL - >每用戶

他們是由相關的計費信息t_billing.bil_addressref = t_address.adr_ref

在計費表,我有一個字段 bil_date - >日期法案已發行時/發送 bil_paydate - >日期時,法案已納了

我沒有喜歡,確定了「最差的付款人「,意思是o誰需要平均最長的時間來支付賬單。

例如:

號 - bil_date - bil_paydate - adr_ref
1 - 2017年1月1日 - 2017年1月10日 - 1
2 - 2017年2月1日 - 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
...

所以
藥品不良反應2平均付費時間29天
爲ADR 1平均付費時間6.5天

從最壞的有序

我想有前5名成績最糟糕的納稅人,降到最差。

我試了幾個疑問和想法,但沒來翻過正確的想法:/

有什麼建議?謝謝,斯蒂芬。

+0

,你能否告訴我們到目前爲止你已經嘗試了什麼問題? – Optimae

+0

最後一次嘗試是在t_billing中將所有adr_ref區分開來,其中paydate IS NOT NULL,然後在一段時間內(知道它不會導致我想要的結果)。甚至沒有得到一個值AMT:/'選擇bil_addressref,adr_lastname,adr_firstname,AVG(DATEDIFF(TO_DAYS(bil_paydate),TO_DAYS(bil_date)))AS平均,adr_ref FROM t_billing \t \t \t \t \t \t \t INNER JOIN t_address ON bil_addressref = adr_ref \t \t \t \t \t \t \t \t \t \t \t \t \t \t WHERE bil_mandantref = '$ mandantref' \t \t \t \t \t \t \t AND bil_addressref ='「。$ rowWorstPayerMain ['bil_addressref']。「」 \t \t \t \t \t \t \t GROUP BY bil_addressref \t \t \t \t \t \t \t ORDER BY平均ASC' –

回答

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 
+0

,似乎工作,謝謝。不得不加上一個 'AND bil_paydate IS NOT NULL',以獲得正確的結果。爲什麼AVG不能爲此工作?MH,問題似乎是,我開始使用t_billing並加入了t_address而不是其他方式。 –