侵刪,不足之處請諒解,
作業中遇到的問題:
不會就百度,多百度幾次總會有自己需要的,比如這個曲線統計,我也是借用了博客里的各位大大,然后按照自己專案需求做的,頁面給前端懟資料去就行,下面是步驟
1,用戶統計曲線圖,如果其中某一天沒有資料,曲線圖的日期鏈接不起來,如圖:

我的解決方法:靠百度,首先生成某個范圍的日歷表資料,再通過這個日歷表連接查詢需要統計資料表的資料,沒有的話,默認為 0;這樣就可以得出這個范圍內完整的資料了,所以這種方案,更適合這種需求的變化,
現在通過如下 sql 陳述句生成日歷表:
CREATE TABLE num (i int);-- 創建一個表用來儲存0-9的數字 INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數字,方便以后計算時間 CREATE TABLE if not exists calendar(datelist date); -- 生成一個存盤日期的表,datalist是欄位名
-- 這里是生成并插入日期資料
INSERT INTO calendar(datelist) SELECT adddate( ( -- 這里的起始日期,你可以換成當前日期 DATE_FORMAT("1970-1-1", '%Y-%m-%d') ), numlist.id ) AS `date` FROM ( SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id FROM num n1 CROSS JOIN num AS n10 CROSS JOIN num AS n100 CROSS JOIN num AS n1000 CROSS JOIN num AS n10000 ) AS numlist;
執行以下SQL測驗:BETWEEN 取范圍值
SELECT COUNT(u.userID) AS num, c.datelist FROM calendar AS c LEFT JOIN `user` AS u ON c.datelist = DATE_FORMAT(u.createtime,'%Y-%m-%d') WHERE c.datelist BETWEEN '2020-03-01' AND '2020-03-26' GROUP BY c.datelist ORDER BY c.datelist
結果如下:

最終效果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/61031.html
標籤:MySQL
上一篇:記憶體居高不下,日增1G
下一篇:Mysql存盤結構
