下面的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