MySQL数据篇(五)--SQL对数据进行按月统计,或对数据进行按星期统计
对于所有的需求,当你不知道怎么处理的时候,你就先用最简单的方法,或者说的明白一点,用最原始的方法,先实现业务需求再说。
一、对提现队列数据表“ims_checkout_task”进行汇总统计,按月汇总统计每个月的提现总额,提现总次数。
1、SQL操作如下:
SELECT id
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 11 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 10 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 9 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 8 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 7 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 6 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 5 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 4 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 3 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 2 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 0 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as ''
FROM ims_checkout_task
2、数据库返回如下:
3、关键词:case when
//流程控制语句case语法,例如,如果sex字段值为1,则输出男;如果sex值为2,则输出女;否则输出其他
CASE sex
WHEN '' THEN '男'
WHEN '' THEN '女'
ELSE '其他' END
//所以上面的SQL为,如果条件成立,则输出提现金额money字段,否则输出0.
时间处理
//对时间戳格式化成 2018-10
FROM_UNIXTIME(addTime,'%Y-%m')
//SQL获取当前时间格式 2019-08 ,根据expr值不同,依次获取前一个月1,前两个月2 ···
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 0 MONTH),'%Y-%m')
// 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format)
//函数从日期减去指定的时间间隔。
DATE_SUB(date,INTERVAL expr type)
//函数返回当前的日期。
CURDATE()
例如
SELECT NOW(),CURDATE(),CURTIME()
例如
SELECT DAYOFWEEK(NOW()),WEEKDAY(now()),DATE_FORMAT(NOW(),"%w"),NOW()
二、对积分订单数据表按周汇总统计订单量,比如今天是周二,返回周一到周二的每天单量汇总数据,依次类推
1、SQL操作如下:
SELECT id
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 1 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 2 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 3 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 4 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 5 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 6 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 0 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as ''
FROM ims_integral_order
2、数据库返回如下:
3、关键词
//格式化时间戳,返回星期数,注意周日返回值为0
DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w')
//返回当前时间为一年中第几周
WEEK(DATE_ADD(CURDATE(),interval 6 day),2)
//获取指定日期是一年中的第几周
WEEK(date,mode)
//函数向日期添加指定的时间间隔。
DATE_ADD(date,INTERVAL expr type)
//所以上面的查询条件为星期和第几周同时满足
MySQL数据篇(五)--SQL对数据进行按月统计,或对数据进行按星期统计的更多相关文章
- mysql进阶(十九)SQL语句如何精准查找某一时间段的数据
SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...
- MySQL高级篇 | 分析sql性能
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越 ...
- Python学习日记(三十七) Mysql数据库篇 五
pymsql的使用 初识pymysql模块 先在数据库中创建一个用户信息表,里面包含用户的ID.用户名.密码 create table userinfo( uid int not null auto_ ...
- MYSQL查询一周内的数据(最近7天的)、最近一个月、最近三个月数据
如果你要严格要求是某一年的,那可以这样 查询一天: select * from table where to_days(column_time) = to_days(now()); select * ...
- 1.4 数据库和常用SQL语句(正文)——MySQL数据库命令和SQL语句
前面我们已经讲述了,登录时,我们使用mysql –u root –p命令进行,此时如果设置了密码,则需要输入密码. 输入密码后即进入MySQL的操作界面,此时,命令行窗体左侧显示"mysql ...
- Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况.这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库. 1 在数据前插入一列单元格,用来拼写sql语句. 具体 ...
- [转]Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况.这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库. 1 在数据前插入一列单元格,用来拼写sql语句. 具体 ...
- 最新MySQL入门篇
一.SQL简介 SQL:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...
- {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析
MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...
- MySQL数据迁移到SQL Server
数据迁移的工具有很多,基本SSMA团队已经考虑到其他数据库到SQL Server迁移的需求了,所以已经开发了相关的迁移工具来支持. 此博客主要介绍MySQL到SQL Server数据迁移的工具:SQL ...
随机推荐
- PDF转换成DXF文件?PDF转DXF的操作方法
在CAD工作中,经常就需要将绘制完成的图纸文件的格式进行转换,那怎么将PDF文件转换成DXF格式的呢?具体要怎么来进行操作呢?本编教程小编就来教教大家具体操作方法,具体操作如下: 一.工具转换 推荐指 ...
- Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码
需求分析: 有个厂家,下面有很多代理商(商户或门头等),之前商户进货.库存.销售.客户资料等记录在excel表格中 或者无记录,管理比较混乱,盈利情况不明.不能有效了解店铺经营情况和客户跟踪记录 厂家 ...
- 从0系统学Android-2.4 Activity 的生命周期
本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 本系列持续更新中.... 2.4 Activity 的生命周期 掌握 Activity 的生命周期对于开发者来说是 ...
- 公司员工表示 nginx 之父被警方带走
ZDNet 12 日报导,俄罗斯警方当天突击搜查了 NGINX 公司(nginx 服务器项目商业化公司)在莫斯科的办事处,并带走了 NGINX 公司联合创始人 Igor Sysoev 与 Maxim ...
- GO语言规范
1.golang的命名推荐使用驼峰命名法,必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母.数字或下划线. 2.golang中根据首字母的大小写来确定可以访问的权限.无论是方 ...
- 算法问题实战策略 PICNIC
下面是另一道搜索题目的解答过程题目是<算法问题实战策略>中的一题oj地址是韩国网站 连接比较慢 https://algospot.com/judge/problem/read/PICNIC ...
- WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据
原文:WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据 功能阐述 就上面那图片 刚开始 考虑使用 RowHeaderTemplate 来实现 发现总绑定不上数据 ...
- Sublime和VSCode生成基础HTML代码
我们在编写前端页面时,常希望能自动生成基础的HTML代码.而在Sublime和VSCode就有这样的功能 在Sublime中,在编辑栏输入html,然后敲Tab键,则自动生成代码如下: <!DO ...
- IT兄弟连 HTML5教程 HTML5和CSS3的关系
HTML5是第五版HTML的标准,CSS3则是第三版CSS,新增一些非常实用的选择器和样式属性,并且CSS3语言开发是朝着模块化发展的.以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为 ...
- 10、Fiddler中设置断点修改Response
当然Fiddler中也能修改Response 第一种:打开Fiddler 点击Rules-> Automatic Breakpoint ->After Response (这种方法会中 ...