MySQL按天/周/月/季度/半年/年统计数据

MySQL按天/周/月/季度/半年/年统计数据

1、用到的mysql函数

  • FROM_UNIXTIME(时间戳, 格式)

    • 将时间戳格式成指定字符串
    • 格式说明
      • %Y 年, 数字, 4 位
      • %m 月, 数字(01……12)
      • %c 月, 数字(1……12)
      • %u 星期(0……52), 这里星期一是星期的第一天
      • %U 星期(0……52), 这里星期天是星期的第一天
      • %d 月份中的天数, 数字(00……31)
      • %e 月份中的天数, 数字(0……31)
        copyselect FROM_UNIXTIME('1598812205','%Y-%m-%d');
        # 2021-09-03
        
  • YEAR(时间字符)

    • 返回时间中的年份

      copyselect YEAR('2021-09-03');
      # 2021
      
  • QUARTER(时间字符)

    • 返回时间中的季度,1-4

      copyselect QUARTER('2021-09-03');
      # 3
      
  • IF(条件, 正确值, 错误值)

    • 判断条件,条件满足返回正确值,条件不满足返回错误值

      copyselect IF(1=1,'正确','错误');
      # 正确
      
  • 浮点数取整

    • ceil(): 向上取整

    • floor():向下取整

    • round():四舍五入

      copyselect ceil(4.5);	# 5
      select floor(4.5);	# 4
      select round(4.4);	# 4
      select round(4.5);	# 5
      
  • CONCAT(字符1,字符2,...)

    • 拼接字符

      copyselect CONCAT('aa','bb','cc');
      # aabbcc
      

2、数据表

  • order表
id order_amount add_time
1 16.99 1598806195
2 17.99 1598919265
... ... ...

3、编码

3.1、按天统计

copySELECT
  FROM_UNIXTIME(add_time,'%c月%e日') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
8月31日 24 1377.19
9月1日 10 407.76

3.2、按周统计

copySELECT
  FROM_UNIXTIME(add_time,'%Y年%u周') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
2020年36周 34 1784.95

3.3、按月统计

copySELECT
  FROM_UNIXTIME(add_time,'%Y年%c月') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
2020年8月 24 1377.19
2020年9月 10 407.76

3.4、按季度统计

copySELECT
  CONCAT(YEAR(FROM_UNIXTIME(add_time)),'年第',QUARTER(FROM_UNIXTIME(add_time)),'季度') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
2020年第3季度 34 1784.95

3.5、按半年统计

copySELECT
	CONCAT(YEAR(FROM_UNIXTIME(add_time)),'年',IF(CEIL(QUARTER(FROM_UNIXTIME(add_time))/2)=1,'上','下'),'半年') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
2020年下半年 34 1784.95

3.6、按年统计

copySELECT
  FROM_UNIXTIME(add_time,'%Y年') 日期,
	count(*) 订单数,
	sum(order_amount) 订单金额
FROM
	`order` 
GROUP BY
	日期;

查询结果

日期 订单数 订单金额
2020年 34 1784.95
posted @   pine007  阅读(1663)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

目录导航

点击右上角即可分享
微信分享提示