侵刪。不足之處請諒解。
工作中遇到的問題:
不會就百度,多百度幾次總會有自己需要的。比如這個曲線統計,我也是借用了博客里的各位大大,然后按照自己項目需求做的,頁面給前端懟數據去就行,下面是步驟
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
結果如下:
最終效果: