混乱的mysql答案加起来不是一个数字

lmvvr0a8  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(276)

我有一个电话要问我们商店的玩家数量,总的总数比单独的总数加起来还少。我不知道为什么会这样。

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 我的查询有缺陷吗?为什么不加起来?
谢谢你的帮助。

fnx2tebb

fnx2tebb1#

你的一些玩家在一个以上的商店里玩。可能是一个玩家在4家商店里玩,或者是一个不同的组合,比如3个玩家在2家商店里玩。
只有当每个玩家只能被分配到一个商店时,您的查询才能工作。如果这不是真的,那么大多数时候结果都是不一致的。

相关问题