MySQL按周统计每周数据总和,用到了WEEK,subdate,date_format,date_sub,date_add函数。

  WEEK() 查看给定日期周数,语法:WEEK(date, mode);

  SUBDATE() 函数做日期减法操作,语法:SUBDATE(date,INTERVAL expr unit) 和 SUBDATE(expr,days);

  DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据,语法:DATE_FORMAT(date,format);

  DATE_SUB() 函数从日期减去指定的时间间隔,语法:DATE_SUB(date,INTERVAL expr type);

  DATE_ADD() 函数向日期添加指定的时间间,语法:DATE_ADD(date,INTERVAL expr type);

样例数据:

-- 创建数据样例表
CREATE TABLE `day_weight_tb` (
`day_date` varchar() DEFAULT NULL,
`in_weight` varchar() DEFAULT NULL,
`out_weight` varchar() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入样例数据
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2018-03-10', '18.84', '74.14');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-21', '17.69', '25.97');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-01', '16.48', '10.0');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-29', '10.9', '74.12');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-13', '15.25', '16.62');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-12', '19.21', '95.42');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-14', '26.38', '20.59');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-24', '15.99', '16.823');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-13', '94.846', '56.256');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-03', '15.63', '12.128');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-12', '14.282', '24.046');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-16', '14.045', '11.73');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-08', '23.41', '23.441');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-31', '11.177', '4332.26');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-01-23', '11.8', '17104.49');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-17', '17.95', '13.81');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-01', '19.23', '20.43');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-05', '21.55', '51.0');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-27', '13.003', '23.32');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-03-11', '16.44', '24.44');
INSERT INTO `day_weight_tb` (`day_date`, `in_weight`, `out_weight`) VALUES ('2019-02-28', '16.48', '23.4');
-- 创建结果表,插入统计结果
drop TABLE if exists week_count_tb;
CREATE TABLE `week_count_tb` (
`week_day` varchar() DEFAULT NULL,
`week_num` varchar() DEFAULT NULL,
`in_weight` varchar() DEFAULT NULL,
`out_weight` varchar() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; delete from week_count_tb;
INSERT INTO week_count_tb
SELECT
*
FROM
(
SELECT
middle.week_day,
middle.week_num,
sum(in_weight) in_weight,
sum(out_weight) out_weight
FROM
(
SELECT
subdate(
date_sub(day_date, INTERVAL DAY),
date_format(date_sub(day_date, INTERVAL DAY),'%w') - ) week_day,
WEEK (
date_add(subdate(
date_sub(day_date, INTERVAL DAY),
date_format(date_sub(day_date, INTERVAL DAY),'%w') - ),INTERVAL DAY),) week_num,
in_weight,
out_weight
FROM
day_weight_tb
) middle
GROUP BY
week_day,
week_num
) result;

思路:先确定一天是属于一年中的具体周数,再获取到一周中的周末日期,最后根据周数分组求和。

MySQL按周统计 WEEK 实例的更多相关文章

  1. mysql 按月按周统计

    http://hi.baidu.com/liangjian1024/blog/item/6861541b1416094842a9ad7c.html 表finance有俩个字段如下 date date  ...

  2. mysql如何按周统计数据?

    转自:https://www.cnblogs.com/wanghetao/p/3920124.html MySql 按周/月/日统计数据的方法 知识关键词:DATE_FORMAT  select DA ...

  3. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

  4. 实现mysql按月统计的教程

    From: http://www.jbxue.com/db/758.html 实现mysql按月统计的教程   mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句? se ...

  5. MySQL之体系结构与存储实例

    定义数据库和实例 在数据库领域中有两个词很容易混淆,这就是“数据库”(database)和“实例”(instance).作为常见的数据库术语,这两个词的定义如下: 数据库:物理操作系统文件或其他形式文 ...

  6. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  7. Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例

    Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...

  8. mysql按月统计六个月内不同类型订单的成交金额

    mysql按月统计六个月内不同类型订单的成交金额 创建数据库 CREATE DATABASE test; 创建订单表 CREATE TABLE `t_order` ( `id` ) NOT NULL ...

  9. MySQL InnoDB配置统计信息

    MySQL InnoDB配置统计信息 1. 配置持久化(Persistent)统计信息参数 1.1 配置自动触发更新统计信息参数 1.2 配置每张表的统计参数 1.3 配置InnoDB优化器统计信息的 ...

随机推荐

  1. 科学计算库Numpy(1)

    Numpy 一,数据结构 数据类型: ndarray import numpy world_alchol = numpy.genfromtxt('world_alchol.txt',delimiter ...

  2. Spherical CNNs代码配置过程

    ICLR18 best paper: Spherical CNNs 论文链接:https://arxiv.org/abs/1801.10130 GITHUB地址:https://github.com/ ...

  3. ietester下ie6.0停止工作问题的修复

    工作时经常用到ie6.0来测试兼容性,不得不吐槽下ie6.0的过分老旧,页面编写完成后,最痛苦的莫过于在ie6.0下测试兼容性. 今天满怀基情的打算开始了一天的工作,却在刚要开始之初,被同事的iete ...

  4. sqlalchemy关于时间的数据类型

    #导入模块 from sqlalchemy import Column, Integer, String, Date, create_engine from sqlalchemy.ext.declar ...

  5. Struts功能详解——ActionMapping对象

    Struts功能详解——ActionMapping对象 ActionMapping描述了struts中用户请求路径和Action的映射关系,在struts中每个ActionMapping都是通过pat ...

  6. python基本使用事项

    1.绝对不能使用word及Windows自带的记事本编写代码,本人使用Notepad++, 2.python交互模式 命令符下输入python显示“ >>>“,表示进入了交互模式 在 ...

  7. SSM面试题

    一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心: 1.IOC/DI(控制反转/依赖注入 ...

  8. MyBatis-Spring开发记录贴(新手)

    初学MyBatis-Spring,发个帖子记录一下自己的学习历程,先写个自己的编程步骤. 1.先进行数据库设计. 2.根据所设计的数据,写出相应的POJO,并写出setter和getter方法. 3. ...

  9. 关于mysql中存储json数据的读取问题

    在mysql中存储json数据,字段类型用text,java实体中用String接受. 返回前端时(我这里返回前端的是一个map),为了保证读取出的数据排序错乱问题,定义Map时要用LinkedHas ...

  10. Python 模块调用的变量与路径

    自己编写的python代码经常需要分模块文件以及包,梳理一下调用顺序.执行顺序.工作路径.函数与变量等 工作路径 首先是工作路径,当模块代码放在统一的包内的时候,其路径和外层的包路径不同,当作为主调用 ...