mysql获取近7天每天数据_sql 获取最近7天的每日数据

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

查询最近一天的数据:

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;

count 里面加条件

SELECT handler,count(case status when 1 then 1 else null end) as count from home_jb_ww_sh GROUP BY handler

经验分享 程序员 微信小程序 职场和发展