下面是MySQL中的表
Table:ShopInfo
ShopCode ShopName
-------- -------
X Xylophon
Y Yellow
Z Zoota
K Kite
Table: Income
Shop Date Earnings
----- ---------- --------
X 2014-10-17 4000
Y NULL NULL
Y 2014-11-09 5000
Y 2014-11-18 3000
Y 2014-12-05 2000
Z 2014-12-25 6000
K NULL NULL
我想仅在 11 月份查找每家商店的总收入,Null 收入将被替换为零。结果表将是
ShopName NovEarn
-------- -------
Yellow 8000
Kite 0
这就是我正在做的:
SELECT ShopInfo.ShopName, IFNULL( SUM(Income.Earnings), 0 ) AS NovEarn
FROM Income
JOIN ShopInfo ON Income.Shop=ShopName.ShopCode
GROUP BY Income.Shop
HAVING (MONTH(Income.Date)=11 AND YEAR(Income.Date)=2014) OR Date IS NULL
ORDER BY NovEarn DESC
它给了我
ShopName NovEarn
-------- -------
Yellow 10000
Kite 0
即所有月份的收入总和。我做错了什么?
最佳答案
尝试放置 having 子句和 where 子句:
SELECT ShopInfo.ShopName, IFNULL( SUM(Income.Earnings), 0 ) AS NovEarn
FROM Income
JOIN ShopInfo ON Income.Shop=ShopName.ShopCode
WHERE (MONTH(Income.Date)=11 AND YEAR(Income.Date)=2014) OR Date IS NULL
GROUP BY Income.Shop
ORDER BY NovEarn DESC
关于mysql - 在 GROUP BY() 之后过滤数据,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884027/