我有一个电话要问我们商店的玩家数量,总的总数比单独的总数加起来还少。我不知道为什么会这样。
SELECT (SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid > 100
AND howmuchplayed > 0)
AS total,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 12786
AND howmuchplayed > 0)
AS ra,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 12801
AND howmuchplayed > 0)
AS mp,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 12830
AND howmuchplayed > 0)
AS cy,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 13389
AND howmuchplayed > 0)
AS ne,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 13600
AND howmuchplayed > 0)
AS lm,
(SELECT
COUNT(DISTINCT (playerid))
FROM playerhistory
WHERE MONTH(from_unixtime(checkouttime)) = 11
AND YEAR(from_unixtime(checkouttime)) = 2018
AND storeid = 13694
AND howmuchplayed > 0)
AS ch
结果如下: total | ra | mp | cy | ne | lm | ch 303 | 34 | 74 | 27 | 43 | 75 | 53
正如你所看到的,总数是303,但当你把ra,mp,cy,ne,lm和ch加起来,就变成306了
表中没有其他storeid: select distinct(storeid) from playerhistory where storeid > 100
结果: storeid 12786 12801 12830 13389 13600 13694
我的查询有缺陷吗?为什么不加起来?
谢谢你的帮助。
1条答案
按热度按时间fnx2tebb1#
你的一些玩家在一个以上的商店里玩。可能是一个玩家在4家商店里玩,或者是一个不同的组合,比如3个玩家在2家商店里玩。
只有当每个玩家只能被分配到一个商店时,您的查询才能工作。如果这不是真的,那么大多数时候结果都是不一致的。