2017-03-28 78 views
0

我被困在一個查詢中,我想將狀態總和結果存儲在狀態爲3的變量中,現在發生的是存儲最後一行的值並將其與所有行一起顯示將條件求和結果保存到變量MySQL

下面是該查詢

SELECT 
request_made_on,driver_id, 
@sum_result = SUM(status = 3) AS complete_count,@sum_result, 
SUM(status = 6) AS missed_count, 
(status = 4) AS canceled_count, 
sum(actual_fare),sum(discount) 
from tb_engagements 
group by date(request_made_on),driver_id; 

and here is the screenshot, second screenshot

+0

編輯您的問題,並提供樣本數據和期望的結果。你如何期望在一個變量中存儲多個值? –

+0

請檢查截圖,我想存儲每行的總和結果 –

+0

在'SELECT'中使用':=',而不是'='分配。 –

回答

0

我猜你想要的所有值的總和

select request_made_on, driver_id, 
     (@sum_result := @sum_result + SUM(status = 3)) AS complete_count, 
     sum(status = 6) AS missed_count, 
     sum(status = 4) AS canceled_count, 
     sum(actual_fare), 
     sum(discount) 
from tb_engagements c cross join 
    (select @sum_result := 0) params 
group by date(accept_time), driver_id; 

注:

  • 你並不需要返回變量的值,以及表達。該表達式將值添加到結果集中。
  • 您不需要if()來計數值。 MySQL有一個很好的簡短表達方式,將數值上下文中的布爾表達式視爲整數。
+0

每個complete_count對它的總和 假設如果一行中的完整計數爲0,那麼變量值應該爲0等 –

+0

您共享的查詢不起作用。它給錯誤的狀態計算3 –

+0

@戈登Linoff:是不是必須寫(@sum_result:= COALESCE(@ sum_result,0)+ SUM(...? – etsa

相關問題