我有一個關於用戶數量兩個MySQL查詢:COUNT DISTINCT與GROUP BY
首先會是這樣:
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
And r結果在:
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?
也許不同的用戶數量增長不那麼多?如果我們假設在四月以外只有225個用戶,結果是非常合理的。這意味着很多重訪/重用。你可以同時使用兩個查詢,從第一個不存在於第二個的地方開始,如果你得到了225我認爲你有你的答案。 – xQbert