mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?
推荐阅读:
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
相关文章:

如何开启to 日志
命名 gc_date %Y-%m-%d %H:%M:%S.log,11月15号21:51:58开始生成gc日志 注:在哪个目录启动tomcat,就会在哪个目录生成gc日志文件 转载于:https://www.cnblogs.com/qqzy168/archive/2012/11/16/2772636.html

联想电脑 Realtek RTL8821CE 无线网卡 驱动安装 16.04/18.04
原文连接: https://askubuntu.com/questions/1071299/how-to-install-wi-fi-driver-for-realtek-rtl8821ce-on-ubuntu-18-04 内容: As far as I can tell, at the time of writing this, there is not yet a Wifi Driver for the Realtek RTL8821CE in the officia…

PXE网络无人职守安装
PXE网络无人职守安装DHCP、TFTP、NFS、APACHE为同一台服务器:192.168.0.1yum -y install dhcp xinetd tftp-server syslinux nfs-utils httpd system-config-kickstart一、配置DHCP1.默认的DHCP配置文件内容是空的,可以拷贝usr目录下的样板文件修改cp /u…

贪心算法之硬币问题
有1元,5元,10元,50元,100元,500元的硬币个C1,C2,C3,C4,C5,C6枚,用这些硬币来支付A元,最少需要多少枚硬币? #include<io…

button按钮样式_一篇文章带你了解CSS3按钮知识
在实际开发中,按钮的应用是必不可少。使用 CSS 来制作按钮,可以更有新意,更有趣,也可以自定义自己想要的样式。 一、平面样式CSS按钮 平面样式按钮的使用现在非常流行,并且符合无处不在的平面设计趋势。,这…

Ubuntu 18.04时间同步
Ubuntu 18.04时间同步原文连接: 原文链接 内容: Sync Clock with Time Servers through the Command Line Check Current Time Status The timedatectl command lets you check the current time status of your system clock. Open your Ubuntu terminal through…

UVa 10051 Tower of Cubes(类似LIS)
题意: 一些重量递增而且各个面都有颜色的立方体,要将这些立方体堆成一个塔,要求两个接触面同色,而且下面的立方体更重。求塔的最大高度。 思路: 用求LIS的思想,无非是多了几个状态。dp[i][j]表示前i个箱子&…

【十五分钟Talkshow】fmplan(十五分钟计划)的初步想法
摘要信息 这个演讲将概述提出了我最近开始的一个名为“fmplan”的 基于互联网的教育计划 }计划简介}内容简介}目标受众}学习环境}支持和帮助讲义地址 http://www.xizhang.com/fmplan/resources/fmplan_overview.pdf 视频地址 http://www.tudou.com/programs/view/hhS5U-o-qRc/…

ACC026简要题解
这场AGC是时间正好在NOI之前休养生息的日子里,果断选择了放弃(虽然也从没有用大号打过)。在随便做完了前几题之后就踏上了去长沙的旅程。NOI系列比赛总是休闲无比,咕咕不断,竟然连开幕式都能咕,今天AK了一下笔试之后就来刚后两题&…

IT男专用表白程序
[c]代码库 001#include<iostream.h> 002#include<windows.h> 003#include<stdio.h> 004#define stoptimeshort 40 005#define stoptimelong 100 006void main() 007{ 008// 009char ch[10]; 010int f[9][36]{ 0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,…

zabbix 安装_zabbix系列(五) Grafana4.6.3+Zabbix 的安装部署
使用了一段时间Grafana,感觉还挺好用的。部分效果图如下:zabbix的安装步骤请参考以下地址,就不再描述,本章主要记录Grafana的部署https://blog.csdn.net/wu2700222/article/details/80520085grafana官网地址:http://…

ubuntu 默认鼠标双击问题
ubuntu 默认鼠标双击问题 内容: 选择 universalAccess ->Typing ubuntu 16.04 ubuntu 18.04 关闭鼠标悬停 点击 点击测试

石家庄的联通破网络,请大家鉴定
C:\Users\workman>pathping www.baidu.com 通过最多 30 个跃点跟踪到 www.a.shifen.com [61.135.169.125] 的路由: 0 workman-PC [192.168.0.100] 1 bogon [192.168.0.1] 2 110.240.90.1 3 221.192.14.166 4 221.192.12.85 5 61.182.172.137 6 218.12.255.210 7 202.99.160.…

Chapter 8(查找)
1.二分查找和插值查找//************************Search.h*********************************** #ifndef SEARCH_H #define SEARCH_H#include <stdio.h> #include <stdlib.h>int BiSearch(int array[],int n,int key);int IVSearch(int array[],int n,int key);int…

HDU 3549 Flow Problem(最大流模版EK算法)
题目链接 第一道最大流,赤裸裸的模版题,刚好可以熟悉模版用。今天看了一下最大流,就看了一个EK算法,感觉有点和二分图匹配算法有点相似,对于最大流问题有点了解了,不过为什么这么做,也不是 很懂…

html css 显示数值_【CSS纯技术】20.03.05-CSS渲染的原理
今天学的东西信息量都很大,导致我总是要反复观看。因为自己还没理解透,所以这一篇也不再追求大家能够看懂,只是用于帮助自己梳理头绪。一、CSS如何计算数值?在写CSS的过程中,我们会用px、em、rem、vh、vw、%等各种单位…

# Ubuntu 配置自带vnc桌面共享
Ubuntu 配置自带桌面共享 1、在setting>>shareing>>remote 选择on 如果用ubunutu直接远程连接的话已经可以了, 2、在ubuntu下使用系统自带的remmina连接 vnc类型 直接输入ip地址 3、如果在windows下面连接的话需要把加密选项关闭 内容:…

select刷新后保存原先选择的信息
前提是之前选择的信息进了后台。 在页面上放一个<s:hidden name"xxx" id"inputF"/>,用它来存select上次选择的值。由于信息已经存在了后台,这个hidden域不管怎么刷新,都会有值。 // s_list是要恢复取值的select va…

python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考。 具体代码如下: from optparse import OptionParser parser OptionParser(usage"usage:%prog [optinos] fil…

Linux下程序崩溃dump时的 core文件的使用方法
Linux下程序崩溃dump时的 core文件的使用方法 1、在启动程序前执行 ulimit -c unlimitedunlimited 表示生成文件的大小限制,也可以修改为自定义的大小,例如: ulimit -c 1024对 core 文件的大小进行限制,单位为 blocks …

div 自动换行_js自动打字--autotypejs
autotypejsuse for typing automatically.介绍使用原生JavaScript(es6)实现的自动打字效果。效果图示例代码(vue):<用法获取:--yarn-- yarn add autotypejs--git-- git clone https://github.com/1esse/autotypejs.git--npm-- …

int[]到string[]的转换方法 Array.ConvertAll
2019独角兽企业重金招聘Python工程师标准>>> using System; using System.Collections.Generic; //int[]到string[]的转换 public class Example { static void Main() { int[] int_array { 1, 2, 3 }; string[] str_array Array.ConvertAll(int_array, new Conve…

Linux结构目录
linux结构目录 Linux中有一句话叫做:一切皆文件。 下面来了解一下这些文件。 首先看一下Linux根目录下结构:bin:存放二进制可执行文件,一般常用命令都存放在这里。boot:存放系统启动时的一些引导文件。dev:…

# NVIDIA Jetson系列系统镜像备份烧录指南
NVIDIA Jetson系列系统镜像备份烧录指南 我使用的是Jetson AGX Xavier 注意事项: 1、烧录工具版本在4.2之前 是叫做 JetPack,, 4.2以及4.2以后的版本叫做SDKmanager, 对应的Jetson OS的版本在4.2与4.1也是差异比较大的,4.2之前的版本智能…

面向对象编程(OOP)----BLUE大师JS课堂笔记(二)
一,把面向过程的程序改写成面向对象的程序 1.前提 所有的程序都在onload里面 2.改写 不能函数嵌套,可以全局变量 3.onload-------------------->构造函数 全局变量------------------->属性 函数----------------------->方法 需要用到面向…

张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?
冒泡法排序核心思想:若有N个数从小到大排序,需进行N-1轮比较,第一轮每相邻的两个数据进行比较N-1次,最终挑选出最大的数,放到这一轮的最后位置;第二轮比较N-1-i次,挑选出这一轮最大的数…

ZOJ3203
为什么80%的码农都做不了架构师?>>> 用一次导数求极值,但是还是犯了错误,要判断边界条件,就是墙上投影值小于0和大于h的时候。 //-------common header--------------- #include <stdio.h> #include <vector…
【校招面试 之 C/C++】第16题 C++ new和delete的实现原理
1、new new操作针对数据类型的处理,分为两种情况:(1)简单数据类型(包括基本数据类型和不需要构造函数的类型)代码实例:int* p new int;汇编码如下: int* p new int; 00E54C44 pus…

C++Primer学习笔记(二)
17.string对象中字符的处理:cctype头文件中定义:isalnum(c) 如果c是字母或数字,则为trueisalpha(c) 如果c是字符,则为trueiscntrl(c) 如果c是控制字符,则为trueisdigit(c) 如果c是数字,则为trueisgraph(c) 如果c不是空格,但可打印,则为trueisprint(c…

Windows下Qt程序打包
Windows下Qt程序打包 将windeployqt.exe 目录添加到系统环境变量 windeployqt.exe目录如下: 命令行打包 1、打开命令行 2、执行打包命令 windeployqt helloworld.exe -dirdeploy -release注意,应用程序使用绝对路径,如果是d盘&#x…