2015-04-18 84 views
0

目前我得到的平均得分爲每小時從我用下面的查詢SQLite數據庫:設定值0,如果它不存在

SELECT AVG(rating) as avgRating, strftime('%H:00', date) as hour FROM ratings 
WHERE questionId = 1 AND strftime('%Y-%m-%d', date) = strftime('%Y-%m-%d', 'now') 
GROUP BY strftime('%H', date); 

現在我想每一個小時,不具有任何價值,獲得平均評分爲0,這可能嗎?

回答

3

典型的答案是(1)在應用程序中執行此操作,(2)使用左連接。對於後者,你需要一個所有小時的列表,這可能會很麻煩。

在某些情況下,小時數都存在於數據中,但它們被where子句過濾掉。如果是這種情況,然後切換到有條件的聚集往往是得到你想要的最簡單的方法:

SELECT COALESCE(AVG(CASE WHEN questionId = 1 THEN rating END), 0) as avgRating, 
     strftime('%H:00', date) as hour 
FROM ratings r 
WHERE strftime('%Y-%m-%d', date) = strftime('%Y-%m-%d', 'now') 
GROUP BY strftime('%H', date); 

這並不適用於所有情況,但如果這樣做,這是一個簡單的解決方案。

相關問題