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

©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) 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 本月第一天相关推荐

  1. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  2. mysql数据库 表大小_统计mysql数据库、表大小_MySQL

    1. 查看该数据库实例下所有库大小,得到的结果是以MB为单位 mysql> select table_schema,sum(data_length)/1024/1024 as data_leng ...

  3. 统计MySQL中某数据库硬盘占用量大小

    放码过来 select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncat ...

  4. easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

    最近在看<高性能的 Mysql>一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS, ...

  5. mysql中实现分类统计查询的步骤_在MySQL中如何进行分组统计查询

    昨天和大家分享了MySQL中,如何进行聚合函数及统计函数查询,若是不清楚的话,可以去看一下我的那个文章.今天继续和大家分享,在MySQL中如何进行分组统计查询,这个在实际应用中,也会经常运用到,比如以 ...

  6. MySQL的跨年周统计问题(%X-%V)

    MySQL的跨年周统计问题 最近在做项目的时候,发现了一个报表在进行周统计并且跨年的时候会出现问题,具体问题截图如下:(主要与%X-%V的时间格式符有关) 2016-12-18 ~~ 2017-01- ...

  7. 统计MYSQL数据库有多少张表和汇总表数据量

    统计MySQL中指定数据库中有多少张表 SELECT count(*) TABLES, table_schema FROM information_schema.TABLES where table_ ...

  8. mysql 本月第一天_mysql日期 获取本月第一天 获取下个月的第一天

    select curdate(); --获取当前日期 select last_day(curdate()); --获取当月最后一天. select DATE_ADD(curdate(),interva ...

  9. MySQL各种优化基于《高性能MySQL第三版》

    [TOC] MySQL各种优化 查询优化 查询优化器模块 查询优化器的任务是发现执行 SQL 查询的最佳方案.大多数查询优化器,要么基于规则.要么基于成本. 大多数查询优化器,包含 MySQL 的查询 ...

  10. mysql优化零基础_MySQL8数据库 | MySQL调优|MySQL底层原理|MySQL零基础新手教程

    MySQL8数据库安装 一.Windows 环境下安装 Select Operating System: Microsoft Windows B.解压并配置MySQL环境变量 MYSQL_HOME: ...

最新文章

  1. 三巨头共聚AAA:ICapsule没有错,LeCun看好自监督,Bengio谈注意力
  2. numpy的array合并-【老鱼学numpy】
  3. 人工智能到底威胁人类还是造福人类?
  4. 360手机卫士界面布局学习过程续(一)
  5. linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
  6. [转]让iframe自适应高度-真正解决
  7. html 增加和删除一行,关于JS点击增加一行,点击删除一行的问题?
  8. [ CodeForces 1063 B ] Labyrinth
  9. Direct3d基础一__CPP基础之碰到无法打开源文件D3DX11.h如何解决
  10. HTML5七夕情人节表白网页制作【我喜欢你H5】HTML+CSS+JavaScript
  11. Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练【收藏不迷路】
  12. 老调重谈:C语言中的指针和数组
  13. CSS常用的选择器学习
  14. pandas基础用法详解
  15. Tapestry入门
  16. 小学课外拓展计算机活动计划,小学科学课外活动计划及总结
  17. 【论文笔记_自蒸馏_2020】Regularizing Class-wise Predictions via Self-knowledge Distillation
  18. 对马尔可夫链(Markov Chain, MC)的学习
  19. 聊聊如何才能学好编程
  20. Red Hat Enterprise Linux 8.8 正式版

热门文章

  1. set工具集的基础使用
  2. linux javascript开发工具,JavaScript 基础工具清单
  3. 大数据能破案 从数据库侦查出新证据
  4. mysql中+desc用法_mysql desc(DESCRIBE)命令实例讲解
  5. 攻防世界easyphp解题wp
  6. Python制作Windows系统服务
  7. vt-d 基本操作流程
  8. cewl工具(URL字典生成器)
  9. idea添加目录时,Mark Directory as的几个选项详解
  10. 寻找http://localhost/phpmyadmin出现的问题:HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用