我想在從數據庫查詢數據以創建圖形時減去兩個值。但它總是返回null當我嘗試代碼總和在Rails中返回空值
downtime = Ticket.by_month.where(:sla => true).sum("restore_time - start_time")
我想在從數據庫查詢數據以創建圖形時減去兩個值。但它總是返回null當我嘗試代碼總和在Rails中返回空值
downtime = Ticket.by_month.where(:sla => true).sum("restore_time - start_time")
你有restore_time
或start_time
null
值。在SQL中,null - X
和X - null
爲null
,全部爲X
,null + X
和X + null
。這意味着您的任何restore_time
或start_time
列中的null
值都會將整個金額轉換爲null
。
您可以用null
小號忽略行:
Ticket.by_month
.where(:sla => true)
.where.not(:restore_time => nil)
.where.not(:start_time => nil)
.sum('restore_time - start_time')
或將其轉換爲一些有意義您的背景:
Ticket.by_month
.where(:sla => true)
.sum('coalesce(restore_time, something_sensible) - coalesce(start_time, something_sensible)')
或者是:
Ticket.by_month
.where(:sla => true)
.sum('coalesce(restore_time - start_time, something_sensible)')
在哪裏something_sensible
將是你想用來代替null
s,這個值當然必須與3210調用的第一個參數具有相同的類型。
這個怎麼樣?
restore_time = Ticket.by_month.where(:sla => true).sum("restore_time")
start_time = Ticket.by_month.where(:sla => true).sum("start_time")
downtime = restore_time - start_time
可悲的是數據返回一個值不是多個數據,按月分組 – alfitra
非常感謝,你拯救我的一天的人 – alfitra