
文章插图
以天为统计周期,是常见需求 。周报、月报更是常见需求 。长周期项目,甚至有年报需求 。我已经掌握了MySQL中按天统计,如何实现按年、按月、按周统计呢?
1、已掌握的技能:按天统计实现以天为统计周期很简单 。具体来说,date() 函数可返回时间数据的日期,即仅有年月日,没有时分秒信息 。结合 group by 可实现按天统计 。
以天为统计周期的数据指标非常多,随便举例,比如每日新增注册用户数 。
select date(created_at) as 注册日期, count(user_id) as 用户数from usersgroup by 注册日期order by 注册日期

文章插图
2、从已知推理,拓展技能既然date()函数可用,那么是否有对应的 year、month、week 等函数可用呢?这纯属我的推理,那试试看吧 。

文章插图
果然可行 。但美中不足的是,返回的周数和月数不带年份 。当数据量跨年时,它会把每年相同周数或月数的数据加在一起 。如何实现某年某月和某年某周呢?已有知识储备去推理,没找到答案,那就直接搜索吧!
3、搜索找答案经过搜索和尝试发现,在mysql中用date_format(column_name,'%Y-%m')来代替month()就能拿到年月值 。

文章插图
如果把其中代表月month的关键字m换成周week呢?试试看 。分别尝试:
date_format(column_name,'%Y-%w') 和 date_format(column_name,'%Y-%W') 。

文章插图
数据返回结果不对呀?并不是预期的今年第几周 。小写的w返回的是本周第几天,大写的W返回的是周几的英文名 。如何拿到今年第几周这个值,实现周报的统计周期呢?
4、觉察知识点欠缺,查漏补缺【mysql 数据分析如何实现日报、周报、月报和年报?】我自学编程时,很喜欢从已知去推理,拓展自己的技能 。通常推理能带来惊喜,当推理不够用时,那就搜索大法好 。搜索特定问题的答案时,通常也能发现某块知识不足 。比如我这里我就意识到自己不熟悉表达日期的关键字或常用语法 。
恰好搜索时遇到相濡以沫66的文章,里面有很好的整理 。
MySQL日期格式化(format)取值范围 。

文章插图

文章插图
把单个知识点,稍微提升到某块知识点,能让自己的知识技能再上一个台阶 。
5、求助也是社交,问人附红包上述表格相当实用,但依然没有解决如何获得“某年第几周”的需求 。
虽然说主动检索找到答案,是很好的习惯 。但自己耗费大量时间也没找到答案,又恰恰有目标相同的人一起互助,何不问问人看呢?学习么,本质上是个社交行为 。在学一样技能时,我喜欢泡几个氛围好的学习群 。经常在群里分享自己的心得笔记,也会主动力所能及地帮助别人,或者提出自己的疑问引发探讨 。求助就是一种很好的社交行为啊 。
此时我把疑问丢到编程学习群,并附上红包请教 。经指点很快得到答案,用到了concat()函数来拼接 。

文章插图
方便大家拷贝学习,放一下代码吧:
select concat(date_format(created_at,'%Y-'),week(created_at)) as 年周, count(user_id) as 用户数from usersgroup by 年周order by 年周6、小结总结一下,mysql中可通过date_format() 和 concat(),week()等函数可完成数据分析中常用的月报、周报中按月、周统计的需求 。关键语句为:
- date(column_name) as 年月日
- date_format(column_name,'%Y-%m') as 年月
- concat(date_format(column_name,'%Y-'),week(column_name) as 年周
特别申明:这篇笔记图中数据为本地数据库,仅供本人练习使用,并非任何产品网站的正式数据 。
原文链接:https://juejin.im/post/5db1245fe51d452a3c6c9ffe
推荐阅读
- 如何优化网站聚合页排名
- 淘宝新产品怎么增加曝光率 淘宝店如何提高曝光
- 淘宝店铺怎么刷流量 如何维持店铺流量
- 如何将茶的运用发挥到极致
- 如何区别茶汤的品种香 地域香 工艺香和陈香
- 如何保存清香型铁观音
- 如何申请商标注册流程 商标申请的流程
- 如何识别明前茶
- 云南四季如春 那如何理解普洱茶的春茶秋茶雨前茶呢
- 如何加入天猫超市 天猫超市是商家进驻还是天猫自己自营的
