推荐阅读:

MySQL复习:20道常见面试题(含答案)+21条MySQL性能调优经验

秋招Java面试大纲:Java+并发+spring+数据库+Redis+JVM+Netty等

以天为统计周期,是常见需求。周报、月报更是常见需求。长周期项目,甚至有年报需求。我已经掌握了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、觉察知识点欠缺,查漏补缺

我自学编程时,很喜欢从已知去推理,拓展自己的技能。通常推理能带来惊喜,当推理不够用时,那就搜索大法好。搜索特定问题的答案时,通常也能发现某块知识不足。比如我这里我就意识到自己不熟悉表达日期的关键字或常用语法。

恰好搜索时遇到相濡以沫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

mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?相关推荐

  1. mysql 函数返回值_MySQL函数--(1)

    /* 函数与存储过程的区别 1.存储过程:可以有0个返回值,可以有多个返回值 函数:有且仅有一个返回值 */ #创建语法 create FUNCTION 函数名(参数列表) return 返回类型 B ...

  2. mysql周报内容范文_Mysql报表查询实例(日报|周报|月报|时间差自动计算)

    例子,mysql报表查询综合实例. 复制代码 代码示例: public List retrieve(IReport report) { List list = new ArrayList(); Map ...

  3. mysql函数返回表类型_如何从MySQL函数返回表?

    您不能从MySQL函数返回表.该函数可以返回字符串,整数,字符等.要从MySQL返回表,请使用存储过程,而不是函数. 让我们首先创建一个表-mysql> create table DemoTab ...

  4. mysql sum函数返回类型_MySQL的sum函数返回的门类

    MySQL的sum函数返回的类型 今天项目切换数据库时,出错 访问数据库的代码大概是这样: String sql = "select sum(number) as sumNumberOfOn ...

  5. mysql sum返回类型_MySQL的sum函数返回的类型

    今天项目切换数据库时,出错 访问数据库的代码大概是这样: String sql = "select sum(number) as sumNumberOfOneDay from tableNa ...

  6. mysql 统计日报_mysql 数据分析如何实现日报、周报、月报和年报?

    以天为统计周期,是常见需求.周报.月报更是常见需求.长周期项目,甚至有年报需求.我已经掌握了mysql中按天统计,如何实现按年.按月.按周统计呢? 1.已掌握的技能:按天统计 实现以天为统计周期很简单 ...

  7. mysql函数if为负数_MySQL的if,case语句

    IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为exp ...

  8. mysql函数编写格式_MySQL函数基础——字符串函数详解

    昨天,咱们对MySQL的数学函数进行了讲解,今天,咱们再来解析MySQL字符串函数. 字符串函数主要用来处理数据库中的字符串数据,MySQL中字符串函数有:计算字符串长度函数.字符串合并函数.字符串替 ...

  9. mysql 函数返回查询结果_MySQL数据库中常用查询函数简介

    MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...

最新文章

  1. 初等数论--整除--两数乘积保持整除性
  2. oracle 存储过程的基本语法 及注意事项
  3. Python实现心跳保活TCP长连接
  4. libpcap讲解与API接口函数讲解
  5. oracle 管道通信,oracle管道化表函数
  6. 使用Vant完成DatetimePicker 日期的选择器
  7. 终于把结婚照片做成了MTV
  8. 一线互联网架构师设计思想解读开源框架!全套教学资料
  9. php生成html文件方法总结
  10. 【复试笔记】市政工程-给水排水管网系统
  11. python爬虫系列二:爬取糗百成人的妹子图片(requests+正则)
  12. 领英linkedin使用手册—领英邮件类型,管理运用的方式方法
  13. 报销差率费与会计借贷理解
  14. boto3使用教程用法
  15. graylog3.0收集飞塔防火墙日志
  16. 添加分类、标签云(球状)、彩色标签
  17. 阿里云OSS绑定自定义域名
  18. TopLevel和Topmost
  19. 全球区块链第9周看点 | 以太坊君士坦丁堡/圣彼得堡硬分叉正式完成;纳斯达克正式上线BTC和ETH指数...
  20. Windows Vista Business系统中成功安装的常用软件

热门文章

  1. 嵌入式开发板设置无密码登录
  2. dedecms部分文章出现读取附加信息出错的解决办法
  3. 关于python3与python2同时存在情况下导入pyqt失败解决记录
  4. 367. Valid Perfect Square
  5. AdminLTE的使用
  6. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )
  7. 最受欢迎的ASP.NET的CMS下载
  8. Linux如何查看当前目录下文件的个数
  9. VIM命令快速记忆(转自杰哥)
  10. SLAM精度测评——EVO