查詢近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;
————————————————
版權聲明:本文為CSDN博主「YJ2」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/y_1111/article/details/78971291


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM