当前位置: 首页 > news >正文

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.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;

方式三:自定义变量实现

#当月每天累计统计(通过自定义变量实现)
#方式三:
#优点:代码简单,无重复过滤条件
#缺点:临时变量,不容易理解
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
	) TIME
	WHERE @date < CURDATE()
) tt
LEFT JOIN (
	SELECT DATE(CreateTime) CreateTime,ROUND(ProductMete / 1000, 1) AS ProductMete,
	ROUND(@ProductMeteAddUp := @ProductMeteAddUp + ProductMete / 1000, 1) 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
) 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领域博主

http://www.dtcms.com/a/124.html

相关文章:

  • 第一个发布成功的UI组件库
  • 【python】点燃我,温暖你 ,快来Get同款~
  • Flutter:webview_flutter插件使用
  • 学习python第6天
  • [附源码]计算机毕业设计JAVAjsp求职招聘平台开发
  • C++ opencv 图像像素的逻辑操作
  • 【Revit二次开发】模型中存储数据——参数和外部存储(Parameter, Schema and Entity)
  • 基于粒子群优化和模拟退火算法增强传统聚类研究(Matlab代码实现)
  • 前端经典面试题 | 性能优化之图片优化
  • 这些包括我在内都有的Python编程陋习,趁早改掉
  • 基于FPGA的数据采集系统
  • 10道不得不会的 Java容器 面试题
  • CPU的睿频、超线程、SIMD指令集等特性对密码算法性能的影响
  • python基于PHP+MySQL的论坛管理系统
  • 修改寄存器值的方法
  • 网络工具Netwox和Wireshark详解
  • Linux如何写C语言
  • PyTorch1.13 亮点一览,TorchEval、MultiPy 、TorchSnapshot 新库大解读
  • VCS工具学习笔记(3)
  • 初识C++(三)
  • C++ 【多态】
  • Codeforces 1750A. Indirect Sort
  • 7.10 操作系统的启动
  • 项目计划要趁早
  • 【阅读笔记】理解表驱动设计
  • [C语言、C++]数据结构作业:用递归实现走迷宫(打印正确通路即可)
  • JVM垃圾回收系列之垃圾收集器二
  • 2023年,前端开发未来可期
  • mysql 常用查询优化策略详解
  • 区块链的认识