MySQL按周统计 WEEK 实例
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 实例的更多相关文章
- mysql 按月按周统计
http://hi.baidu.com/liangjian1024/blog/item/6861541b1416094842a9ad7c.html 表finance有俩个字段如下 date date ...
- mysql如何按周统计数据?
转自:https://www.cnblogs.com/wanghetao/p/3920124.html MySql 按周/月/日统计数据的方法 知识关键词:DATE_FORMAT select DA ...
- mysql数据库分区功能及实例详解
分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解 一,什么是数据库分区 前段时间写过一篇 ...
- 实现mysql按月统计的教程
From: http://www.jbxue.com/db/758.html 实现mysql按月统计的教程 mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句? se ...
- MySQL之体系结构与存储实例
定义数据库和实例 在数据库领域中有两个词很容易混淆,这就是“数据库”(database)和“实例”(instance).作为常见的数据库术语,这两个词的定义如下: 数据库:物理操作系统文件或其他形式文 ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例
Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...
- mysql按月统计六个月内不同类型订单的成交金额
mysql按月统计六个月内不同类型订单的成交金额 创建数据库 CREATE DATABASE test; 创建订单表 CREATE TABLE `t_order` ( `id` ) NOT NULL ...
- MySQL InnoDB配置统计信息
MySQL InnoDB配置统计信息 1. 配置持久化(Persistent)统计信息参数 1.1 配置自动触发更新统计信息参数 1.2 配置每张表的统计参数 1.3 配置InnoDB优化器统计信息的 ...
随机推荐
- html+jquery实现简单图片裁剪
有了上一篇图片放大镜的铺垫,今天的这个例子是缩小镜,因为裁剪的原图往往很大,不能在工作区域看到全部图片,所以,要有缩小镜来显示,当前裁剪的区域是原图的个部分.按照惯例首先看下效果图: 功能一:载入默认 ...
- Yii easyWechat 开发的时候报错:cURL error 60: SSL certificate problem: unable to get local issuer certificat
最后配置了下php.ini文件curl.cainfo = "D:\AppServ\php5\cacert.pem" //这里填写自己对应的路径并去拷贝了下面链接的代码,自己建了个文 ...
- python笔记-数学、元组、日期、文件
python在很多地方和C++相似,比如都会有关系.逻辑等运算符,但也有不同的地方,比如:#Python Number 类型转换int(x [,base ]) 将x转换为一个整数 long(x [,b ...
- python学习笔记-基础、语句、编码、迭代器
#python的优缺点优点:Python简单优雅,尽量写容易看明白的代码,尽量写少的代码.缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地 ...
- Blob与Clob转字符串
/** * blob转字符串 * * @param blob * @return * @throws IOException * @throws SQLException */ public stat ...
- BarCodeUtile
package com.rscode.credits.util; import java.awt.image.BufferedImage; import java.io.ByteArrayOutput ...
- 关于Spring中的<context:annotation-config/>配置(开启注解)
当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如: 使用@Autowired注解,必须事先在Spring容器中声明AutowiredA ...
- 浅谈兔兔对Object.defineProperty的理解
给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象 语法: Object.defineProperty(参数1,参数2,参数3) 参数1:目标对象 参数2:要修改或者添加的属性名称 ...
- word2007无法打开.doc
如果您的WORD2007无法打开.DOC文档,可以试试如下的方法 打开注册表编辑器(开始-运行-输入regedit VISTA中在开始菜单最下方的搜索栏内输入regedit) 展开HKEY_CLASS ...
- asd短片数篇
黄乙己 黄乙己是站着AK而正常的唯一的人.他身材挺高大:蜡黄脸色,眼角间时常夹着些饼干屑:一副黑色的眼镜.虽然挺正常,可是他有良好的饮食习惯,似乎十多个月都是吃的牛奶泡饭,也没有洗饭盒.他对人说话,总 ...