首页 > 数据库 >Mysql 当前月每天累计统计,Mysql 本月第一天

Mysql 当前月每天累计统计,Mysql 本月第一天

时间:2022-11-10 10:13:35浏览次数:45  
标签:第一天 本月 DAY CURDATE Mysql DATE ProductMete CreateTime SELECT

================================

©Copyright 蕃薯耀 2022-11-10

https://www.cnblogs.com/fanshuyao/

 

一、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.40000000 

 

1、方式一: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;

 

 

3、方式三:自定义变量实现

#当月每天累计统计(通过自定义变量实现)
#方式三:
#优点:代码简单,无重复过滤条件
#缺点:临时变量,不容易理解
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;

 

 

 

 

 

(时间宝贵,分享不易,捐赠回馈,^_^)

 

================================

©Copyright 蕃薯耀 2022-11-10

https://www.cnblogs.com/fanshuyao/

标签:第一天,本月,DAY,CURDATE,Mysql,DATE,ProductMete,CreateTime,SELECT
From: https://www.cnblogs.com/fanshuyao/p/16876147.html

相关文章