1. 程式人生 > >查詢近7天,近1個月,近3個月每天的資料量,查詢近一年每個月的資料量

查詢近7天,近1個月,近3個月每天的資料量,查詢近一年每個月的資料量

統計近7天每天,近一個月每天,近三個月每天,近一年每個月的新增數量,用於畫折線圖,由於是根據create_time欄位統計的,所以如果有一天沒有新增,就會缺少這一天的日期,要對日期進行補充,當天沒有新增的new_count置為0,所以要建立一個日期表calendar

1、查詢單表account,近7天每天新增的數量

SELECT IFNULL(COUNT(a.create_time),0) AS new_count,DATE_FORMAT(c.datelist,'%Y-%m-%d') AS show_time  FROM account a RIGHT JOIN calendar c on DATE_FORMAT(c.datelist,'%Y-%m-%d') = DATE_FORMAT(a.create_time,'%Y-%m-%d') WHERE c.datelist < CURDATE() AND c.datelist >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY show_time ORDER BY show_time ASC;

2、查詢單表account近一個月每天、近三個月每天的資料量寫法同上

3、查詢近一年每個月的資料量

SELECT IFNULL(count(a.create_time),0) AS new_count,DATE_FORMAT(c.datelist,'%Y-%m') AS show_time from account a RIGHT JOIN calendar c on DATE_FORMAT(c.datelist,'%Y-%m-%d') = DATE_FORMAT(a.create_time,'%Y-%m-%d') WHERE c.datelist < CURDATE() AND c.datelist >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) GROUP BY show_time ORDER BY show_time ASC;

4、查詢近7天,account表字段為reward符合日期查詢條件的total reward

SELECT IFNULL(SUM(reward),0) AS reward,DATE_FORMAT(c.datelist,'%Y-%m-%d') AS show_time FROM account a RIGHT JOIN calendar c on DATE_FORMAT(c.datelist,'%Y-%m-%d') = DATE_FORMAT(a.create_time,'%Y-%m-%d') WHERE c.datelist < CURDATE() AND c.datelist >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY show_time ORDER BY show_time ASC;

(查詢近一個月每天,近三個月每天的total reward同上)

5、查詢近一年每個月的total reward

SELECT IFNULL(SUM(reward),0) AS reward,DATE_FORMAT(c.datelist,'%Y-%m') AS show_time FROM account a RIGHT JOIN calendar c on DATE_FORMAT(c.datelist,'%Y-%m-%d') = DATE_FORMAT(a.create_time,'%Y-%m-%d') WHERE c.datelist < CURDATE() AND c.datelist >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) GROUP BY show_time ORDER BY show_time ASC;