目录

一、创建表格

二、实现根据字段date,统计每周做题的数量

三、涉及函数解释

1、week(date,mode)

2、weekday(date)

3、DATE_ADD(date,INTERVAL expr unit)


一、创建表格

drop table if  exists `question_practice_detail`;
CREATE TABLE `question_practice_detail` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`question_id`int NOT NULL,
`result` varchar(32) NOT NULL,
`date` date NOT NULL
);
INSERT INTO question_practice_detail VALUES(1,2138,111,'wrong','2021-05-03');
INSERT INTO question_practice_detail VALUES(2,3214,112,'wrong','2021-05-09');
INSERT INTO question_practice_detail VALUES(3,3214,113,'wrong','2021-06-15');
INSERT INTO question_practice_detail VALUES(4,6543,111,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(5,2315,115,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(6,2315,116,'right','2021-08-14');
INSERT INTO question_practice_detail VALUES(7,2315,117,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(8,3214,112,'wrong','2021-05-09');
INSERT INTO question_practice_detail VALUES(9,3214,113,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(10,6543,111,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(11,2315,115,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(12,2315,116,'right','2021-08-14');
INSERT INTO question_practice_detail VALUES(13,2315,117,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(14,3214,112,'wrong','2021-08-16');
INSERT INTO question_practice_detail VALUES(15,3214,113,'wrong','2021-08-18');
INSERT INTO question_practice_detail VALUES(16,6543,111,'right','2021-08-13');

二、实现根据字段date,统计每周做题的数量

1、使用week实现

SELECT date,count(question_id) 题目数量 from(SELECT *,week(date,1) week1
-- 按照周一作为每周的第一天,输出date字段对应的时间属于一年内的哪一周from question_practice_detail) aGROUP BY week1

输出

2、使用weekday实现

SELECT date,count(question_id) 题目数量 from(SELECT *,date_add(date,interval -(WEEKDAY(date)) day) week1
-- 使用weekday输出date字段内的时间属于一周内的哪一天,然后使用date_add将date内的时间输出为每一周的周一from question_practice_detail )sGROUP BY week1

输出:

三、涉及函数解释

1、week(date,mode)

week输出date日期属于一年内的哪一周,365/7=53,一年共53周。week输出该日期为第几周,weekday输出该日期为一周内的第几天(周一至周日)

参数:
date:表示要获取周数的日期
mode:确认计算周数的逻辑,0-7分别表示周一/周日,选择哪个数字,表示将哪个日期作为一周的第一天,因日历内基本将周一作为一周的第一天,故mode可选1,mode默认是选择0即周日作为一周的第一天

模式 一周的第一天  范围
0 周日  0-53 
1 周一  0-53 
2 周日  1-53
3 周一  1-53
4 周日  0-53 
5 周一  0-53 
6 周日  1-53
7 周一  1-53

举例:

select week('2022-7-4',1)   

输出:27    mode=1,表示将周一作为一周的第一天,日历内7月4日为周一,所以是该天作为27周的第一天

举例:

select week('2022-7-3',1) 

输出:26    mode=1,表示将周一作为一周的第一天,日历内7月3日为周日,所以该天是作为26周的最后一天

2、weekday(date)

输出日期属于一周内的哪一天,0 表示周一,1 表示周二,……,6 表示周日

select weekday('2022-7-4')       

输出:0,表示7月4日为一周内的周一

select weekday('2022-7-3')    

输出:6,表示7月3日为一周内的周日

3、DATE_ADD(date,INTERVAL expr unit)

DATE_ADD对日期类型的数据进行加或减

参数:
date:一个时间类型的字符。
INTERVAL:固定的标志。
expr:表示数量,如果为正则为加上,如果为负则为减去。
unit:表示加上或减去的时间类型,比如年,月,日,周等
举例:

select DATE_ADD('2021-5-3',INTERVAL -1 month)

输出:2021-4-3

mysql按周统计某维度指标(week与weekday)相关推荐

  1. mysql按周统计_MySQL按周统计 WEEK 实例

    --创建数据样例表 CREATE TABLE `day_weight_tb` ( `day_date` varchar(16) DEFAULT NULL, `in_weight` varchar(64 ...

  2. mysql 按月统计 包括空月_mysql 按月统计但是有几个月没有数据,需要变成0

    创建现在倒过去的12个月的视图 CREATE VIEW `past_12_month_view` AS SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `month ...

  3. MySql按周,按月,按日分组统计数据、日期计算。并统计环比、同比

    MySql按周,按月,按日分组统计数据 <!-- 按日查询 --> SELECT DATE_FORMAT(created_date,'%Y-%m-%d') as time,sum(mone ...

  4. mysql每个月数据按天行转列_Mysql 中使用DATE_FORMAT函数按月、周统计数据

    项目中的统计报表作的很多,需求中有按周.月统计数据的.查看了Mysql的API,发现Date_format是格式化日期的,看了Date_format()的具体说明后就用这个函数按周统计,sql大致如下 ...

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

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

  6. mysql分季度统计数据_Mysql 按年度、季度、月度、周、日统计查询的例子

    问题:开发时建表没有 建立day month year 字段 直接用的时间戳,但是统计时要用到按天,月,年进行排序,应该如何实现? 直接用mysql可以处理: mysql没有提供unix时间戳的专门处 ...

  7. 七周成为数据分析师 第二周:业务篇-指标

    七周成为数据分析师 第七周:Python - CSDN博客 七周成为数据分析师 第六周:统计学 - CSDN博客 七周成为数据分析师 第五周:Mysql - CSDN博客 七周成为数据分析师 第四周: ...

  8. MySQL · myrocks · myrocks统计信息

    概述 mysql查询优化主要是在代价统计分析的基础上进行的.合理的代价模型和准确的代价统计信息决定了查询优化的优劣.myrocks基于mysql5.6, 目前的代价模型依赖的主要因素是IO和CPU,m ...

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

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

最新文章

  1. 点击复制-表格选择数据
  2. 禁止/启用angularjs相关缓存的方法
  3. Only tensors or tuples of tensors can be output from traced functions
  4. 计算机怎么没有桌面文件夹名称大全,你的电脑文件总是找不到?是时候学习文件夹分类整理了...
  5. linux下的RPC
  6. 程序员找工作防止小破公司的画饼充饥方法
  7. 五角数 Exercise06_01
  8. 源服务器未能找到目标资源的表示或者不愿,java - 源服务器没有找到目标资源的当前表示,或者不愿意透露一个存在。 关于部署到 tomcat - 堆栈内存溢出...
  9. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(3)签到题3题
  10. 鸿蒙系统非手机用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  11. liunx 环境-配置docker阿里云镜像加速
  12. SLAM_局部束调整(local Bundle Adjustment, BA)步骤与代码示例
  13. Delphi Android menu,Delphi菜单组件TMainMenu使用方法详解
  14. Python3的Counter类
  15. Google网盘 百度网盘文件互传-Multcloud
  16. 推送通知的跳转处理和消息提醒
  17. 阿里云服务器的Linux系统中搭建springboot项目
  18. Java基础笔记-Java8及其他新特性
  19. linux第三方SDK库冲突,摄像机SDK对接第三方平台一SDK库问题FAQ
  20. 对话李国杰:突破麦肯锡和图灵的框框,人工智能要解决大问题丨GAIR 2021

热门文章

  1. 大屏时代的生态变迁,看平板手机的拇指热键与界面布局
  2. 京东物流青龙系统分享
  3. 城市治理的“精英”逻辑批判
  4. Oracle课程知识点总结(2)
  5. 使用Verilog实现FPGA计数器功能
  6. VC6 Ogre环境配置
  7. 《算法的乐趣》-人民邮电出版社 王晓华,序言中的题目
  8. 使用Hibernate 开发租房系统
  9. 钛资本研究院:中国零售业的数字化趋势和软件品类分析
  10. 金山快盘开发 (完)