下面的3個查詢中的每一個都會針對每個月創建的引號數量,吐出一系列的月份。數據庫中的每個報價都有一個與其關聯的用戶名,即該用戶的電子郵件地址。SQL - 爲什麼這3個查詢的結果不加起來?
我假設從查詢1開始的任何一個月的總數應該是「QUERY 2」中該月的數量加上「查詢3」中該月份的數字,但它們不會加起來。
例如,我本來以爲我得到這樣的:
QUERY NUMBER 1
Aug 2013 -> 2836
QUERY NUMBER 2
Aug 2013 -> 2500
QUERY NUMBER 3
Aug 2013 -> 325
所以2500(查詢號碼2)+ 325(查詢號碼3)= 2825,而不是2836(查詢號碼1) 和我不確定它爲什麼不給我2836
查看下面的查詢,爲什麼QUERY 2 + QUERY 3 = QUERY 1? 這裏只有一條線改變:
WHERE created_by_username = '[email protected]'
//QUERY NUMBER 1
SELECT DATE_FORMAT(created,'%b %Y'),
COUNT(DISTINCT username)
FROM view_all_quotes
GROUP BY DATE_FORMAT(created,'%b %Y')
ORDER BY created ASC
//QUERY NUMBER 2
SELECT DATE_FORMAT(created,'%b %Y'),
COUNT(DISTINCT username)
FROM view_all_quotes
WHERE created_by_username = '[email protected]'
GROUP BY DATE_FORMAT(created,'%b %Y')
ORDER BY created ASC
//QUERY NUMBER 3
SELECT DATE_FORMAT(created,'%b %Y'),
COUNT(DISTINCT username)
FROM view_all_quotes
WHERE created_by_username <> '[email protected]'
GROUP BY DATE_FORMAT(created,'%b %Y')
ORDER BY created ASC
對不起,我不能找到建議在這些帖子格式SQL的文檔。
使用四個空格前綴SQL,或者選擇SQL行並按下Ctrl-K,或者選擇SQL行並從編輯器工具箱中選擇代碼 – Andomar 2014-09-02 16:07:16
我的猜測是最後兩個查詢中存在「缺失」記錄, created_by_username'是'Null'。 – hardmath 2014-09-02 16:09:48
我正在努力查明問題。 'GROUP BY DATE_FORMAT(創建'%b%Y')'有問題嗎?因爲當我刪除該行時,我返回的累計數字與最近6個月的每個累計數字不同(我限制了查詢只顯示我測試中的最後6個月)。 – Metzed 2014-09-02 16:33:55