Mysql如何查詢近30天活躍用戶數(shù)
思路:
題目要求:統(tǒng)計截至 2019-07-27(包含2019-07-27),近 30 天的每日活躍用戶數(shù)(當天只要有一條活動記錄,即為活躍用戶)
要計算日期之間的天數(shù),這時就需要用到DATEDIFF函數(shù)
DATEDIFF(date1,date2):返回date1 - date2的日期間隔天數(shù)
把在時間要求內(nèi)的篩選出來,再進行 用戶id 分組,最后統(tǒng)計用戶個數(shù)(去重后的)
解題過程:
先對日期進行篩選
SELECT *
FROM activity
WHERE DATEDIFF('2019-07-27',activity_date) BETWEEN 0 AND 29
然后再日期進行分組,計算用戶id,這時需要對用戶id進行去重,若不去重,則會出現(xiàn)以下結(jié)果
SELECT activity_date, COUNT(user_id)
FROM activity
WHERE DATEDIFF('2019-07-27',activity_date) BETWEEN 0 AND 29
GROUP BY activity_date 
所以需要對用戶id進行去重處理(COUNT(DISTINCT user_id)保證每個用戶不相同(或者說重復(fù)出現(xiàn))
踩了個坑:
WHERE DATEDIFF('2019-07-27',activity_date) BETWEEN 0 AND 29
GROUP BY activity_date和
GROUP BY activity_date
HAVING DATEDIFF('2019-07-27',activity_date) BETWEEN 0 AND 29提出問題,這兩個mysql語句都可以執(zhí)行成功,但兩者一點問題都沒有嘛?
一個先過濾后分組,另一個先分組后過濾。按理說沒毛病啊
但是結(jié)果卻是:
- 第一個查詢是正確的,因為它使用WHERE子句來過濾日期范圍,然后使用GROUP BY和COUNT(DISTINCT user_id)來統(tǒng)計每日活躍用戶數(shù)。
- 第二個查詢錯誤地將日期范圍過濾放在了HAVING子句中,而沒有使用聚合函數(shù),這不符合SQL語法。
- 正確的做法是在WHERE子句中指定日期范圍過濾條件,然后使用GROUP BY進行分組統(tǒng)計。
注意:HAVING子句不能獨立于聚合函數(shù)使用來過濾原始數(shù)據(jù)
更多關(guān)于聚合函數(shù)的要點可以查看MySQL零散拾遺(四)借這個案例把里面的要點進行更進一步的闡述說明。
Code
踩坑了
SELECT activity_date day, COUNT(DISTINCT user_id) active_users
FROM activity
WHERE DATEDIFF('2019-07-27',activity_date) BETWEEN 0 AND 29
GROUP BY activity_date 到此這篇關(guān)于Mysql查詢近30天活躍用戶數(shù)的文章就介紹到這了,更多相關(guān)Mysql查詢活躍用戶數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
weblogic服務(wù)建立數(shù)據(jù)源連接測試更新mysql驅(qū)動包的問題及解決方法
WebLogic是用于開發(fā)、集成、部署和管理大型分布式Web應(yīng)用、網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫應(yīng)用的Java應(yīng)用服務(wù)器,這篇文章主要介紹了weblogic服務(wù)建立數(shù)據(jù)源連接測試更新mysql驅(qū)動包,需要的朋友可以參考下2022-01-01
MySQL數(shù)據(jù)庫實現(xiàn)高可用架構(gòu)之MHA的實戰(zhàn)
本文主要介紹了MySQL數(shù)據(jù)庫實現(xiàn)高可用架構(gòu)之MHA的實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
MySql?InnoDB存儲引擎之Buffer?Pool運行原理講解
緩沖池是用于存儲InnoDB表,索引和其他輔助緩沖區(qū)的緩存數(shù)據(jù)的內(nèi)存區(qū)域。緩沖池的大小對于系統(tǒng)性能很重要。更大的緩沖池可以減少磁盤I/O來多次訪問同一表數(shù)據(jù)。在專用數(shù)據(jù)庫服務(wù)器上,可以將緩沖池大小設(shè)置為計算機物理內(nèi)存大小的百分之802023-01-01
mysql 5.7.15 安裝配置方法圖文教程(windows)
這篇文章主要為大家詳細介紹了mysql 5.7.15 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

