聚合函數(AVG、SUM、COUNT)在無符合條件資料時回傳 NULL,應用層常需轉為 0 顯示或參與運算。
SELECT IF(AVG(cai.conversionsRate) IS NULL, 0, AVG(cai.conversionsRate)) AS conversionsRate
FROM campaign_info cai
WHERE insertTime BETWEEN '2011-02-01' AND '2011-02-04'
AND googleCampaignId = 23331401;
SELECT COALESCE(AVG(cai.conversionsRate), 0) AS conversionsRate
FROM campaign_info cai
WHERE insertTime BETWEEN '2011-02-01' AND '2011-02-04'
AND googleCampaignId = 23331401;
優點:標準 SQL,可鏈式 COALESCE(col1, col2, 0) 取第一個非 NULL 值。
SELECT IFNULL(AVG(cai.conversionsRate), 0) AS conversionsRate
FROM campaign_info cai
WHERE insertTime BETWEEN '2011-02-01' AND '2011-02-04'
AND googleCampaignId = 23331401;
-- SUM 無資料回傳 NULL,建議 COALESCE
SELECT COALESCE(SUM(amount), 0) FROM orders WHERE ...;
-- COUNT 永不回傳 NULL(無資料回 0),無需轉換
SELECT COUNT(*) FROM orders WHERE ...;