當前位置:
首頁 >
Mysql 当前月每天累计统计,Mysql 本月第一天
發布時間:2023/12/20
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Mysql 当前月每天累计统计,Mysql 本月第一天
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
==============================
?Copyright 蕃薯耀?2022-11-10
蕃薯耀的博客_CSDN博客-蕃薯耀分享,java,js領域博主
一、Mysql 本月第一天,Mysql?當前月第一天
-- 本月第一天 SELECT DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY);-- 本月第一天 SELECT CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m'), '-01');二、Mysql 當前月每天累計統計
示例效果(ProductMeteAddUp為每天累計的數量):
Name CreateTime ProductMete ProductMeteAddUp ------------ ---------- -------------- ------------------ 重鋼二線 2022-11-07 0.00000000 0.00000000 重鋼二線 2022-11-08 13887.50000000 13887.50000000 重鋼二線 2022-11-09 5212.90000000 19100.400000001、方式一:mysql8.0及以上版本可用
#當月每天累計統計(mysql8.0及以上版本可用) #方式一: #優點:標準,使用系統函數,無重復過濾條件 #缺點:mysql8.0及以上版本可用 SELECT `Name`,DATE(CreateTime) CreateTime,ProductMete, SUM(ProductMete) OVER(ORDER BY CreateTime) AS ProductMeteAddUp FROM Product_Daily WHERE 1=1 AND NAME ='重鋼二線' AND CreateTime > DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY) ORDER BY CreateTime ASC;2、方式二:子查詢 [各版本通用]
#當月每天累計統計(子查詢[各版本通用]) #方式二: #優點:容易理解 #缺點:子查詢存在重復的過濾條件 SELECT `Name`,DATE(CreateTime) CreateTime,ProductMete, (SELECT SUM(p2.ProductMete) FROM Product_Daily p2 WHERE 1=1 AND p2.Name ='重鋼二線'AND p2.CreateTime > DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY)AND DATE(p2.CreateTime) <= DATE(p1.CreateTime)) AS ProductMeteAddUp FROM Product_Daily p1 WHERE 1=1 AND p1.Name ='重鋼二線' AND p1.CreateTime > DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY) ORDER BY CreateTime ASC;方式三:自定義變量實現
#當月每天累計統計(通過自定義變量實現) #方式三: #優點:代碼簡單,無重復過濾條件 #缺點:臨時變量,不容易理解 SELECT `Name`,DATE(CreateTime) CreateTime,ProductMete, @ProductMeteAddUp := @ProductMeteAddUp + ProductMete AS ProductMeteAddUp FROM Product_Daily,(SELECT @ProductMeteAddUp := 0) temp WHERE 1=1 AND `Name` ='重鋼二線' AND CreateTime > DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY) ORDER BY CreateTime ASC;三、Mysql統計每月1號到當前日期的累計數據,自動補充無數據的日期
#當月每天累計統計(通過自定義變量實現),自動補充無數據的日期 SELECT tt.* ,IFNULL(l.ProductMete, 0) ProductMete ,IFNULL(l.ProductMeteAddUp, 0) ProductMeteAddUp FROM (SELECT@date := DATE_ADD(@date, INTERVAL + 1 DAY) `Date`FROM(SELECT @date := DATE_ADD(CURDATE(), INTERVAL - DAY(CURDATE()) DAY)FROM sys_date) TIMEWHERE @date < CURDATE() ) tt LEFT JOIN (SELECT DATE(CreateTime) CreateTime,ROUND(ProductMete / 1000, 1) AS ProductMete,ROUND(@ProductMeteAddUp := @ProductMeteAddUp + ProductMete / 1000, 1) AS ProductMeteAddUpFROM Product_Daily,(SELECT @ProductMeteAddUp := 0) tempWHERE 1=1AND `Name` ='重鋼二線'AND CreateTime > DATE_ADD(CURDATE(), INTERVAL -DAY(CURDATE()) + 1 DAY)ORDER BY CreateTime ASC ) l ON l.CreateTime = tt.date ORDER BY tt.Date ;示例結果:
Date ProductMete ProductMeteAddUp ---------- ----------- ------------------ 2022-11-01 0.0 0.0 2022-11-02 0.0 0.0 2022-11-03 0.0 0.0 2022-11-04 0.0 0.0 2022-11-05 0.0 0.0 2022-11-06 0.0 0.0 2022-11-07 0.0 0.0 2022-11-08 13.9 13.9 2022-11-09 5.2 19.1 2022-11-10 0.0 19.1?==============================
?Copyright 蕃薯耀?2022-11-10
蕃薯耀的博客_CSDN博客-蕃薯耀分享,java,js領域博主
總結
以上是生活随笔為你收集整理的Mysql 当前月每天累计统计,Mysql 本月第一天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派摄像头使用方法
- 下一篇: mysql查询各类课程的总学分_关于SQ