Mysql 统计最近七天内的数据并分组

本文的核心内容:Mysql 统计最近七天内的数据并按天分组


 

自己做项目,想要做有关管理页面的相关报表。其中有一张图表,采用折线图的方式(表示用户增减趋势),显示最近七天内,每天的用户新增数量。

 

第一步:查询一定范围内的数据、数量

查询最近一天的数据:

select * from table where to_days(column_time) = to_days(now());
select * from table where date(column_time) = curdate(); 

查询最近一周的数据

select * from "table"  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date("column_time");
语句解析     
① :CURRENT_DATE:以‘YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取决于函数在一个字符串还是数字上下文被使用。select CURTIME(); 
② :DATE_SUB(date,INTERVAL expr type) ,进行日期减少的操作,可以精确到秒

查询最近一个月的数据:

select * from table  where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);

第二步:统计一定范围内,每个单位内的数量【单位可以天,月、周、年、等】

1)按天统计:

select DATE_FORMAT(start_time,'%Y%-m-%d') days,count(*) count from xxxx group by days; 

2)按周统计:

select DATE_FORMAT(start_time,'%Y-%u') weeks,count(*) count from xxxx group by weeks; 

3)按月统计:

  select DATE_FORMAT(start_time,'%Y-%m') months,count(*) count from xxxx group by months; 

 

第三步:统计最近七天内的数据并按天分组  

思路:将查询范围的数据作为一张虚表,也就是  统计SQL的数据源即可。

SELECT
	DATE_FORMAT( "时间列名", '%Y-%m-%d' ) days,
	count(*) count 
FROM
	
( SELECT * FROM "表名"
 WHERE DATE_SUB( CURDATE( ), INTERVAL 7 DAY ) <= date( "时间列名") ) as "表别名"

GROUP BY
	days; 

 

  • 17
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值