我有两个有关用户数量的 mySQL 查询:
首先是这样的:
SELECT
date_format(r.dataZalozenia,'%Y-%m') as rok_miesiac,
count(distinct r.idUsera) as liczba_buyers
FROM
rezerwacje r
WHERE
r.dataZalozenia >= '2017-01-01'
and r.status = 'zabookowana'
GROUP BY
1
结果是:
"rok_miesiac" "liczba_buyers"
"2017-01" "12862"
"2017-02" "10208"
"2017-03" "10189"
"2017-04" "10993"
"2017-05" "10705"
第二个是:
SELECT DISTINCT
r.idUsera,
count(r.idUsera) as l_reze
FROM
rezerwacje r
WHERE
r.dataZalozenia between '2017-04-01' and '2017-04-30'
and r.status = 'zabookowana'
GROUP BY
r.idUsera
ORDER BY
l_reze DESC
结果是:
idUsera l_reze
516287 8
2495710 6
2195860 6
645233 5
98308 5
543007 5
1464142 5
3461665 5
3443141 5
3818844 4
2305130 4
等等。即基本上是 user_id 和预订数量。在这种情况下,我得到 10768 行,即 10768 个不同的 user_id(仅适用于 4 月份)。
为什么 4 月 1 日查询返回 10993 个不同的 user_id(我认为),而第二个查询返回 10768?
最佳答案
如果 dataZalozenia
是日期时间或时间戳,则您的 BETWEEN 将不包含结束日期以来的大多数记录; “2017-04-30”被视为“2017-04-30 00:00:00”。
关于mysql - 使用 GROUP BY 进行不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44292160/