-- 今天
select * from sp_pass_record where to_days(pass_time) = to_days(now());
-- 一周
select sex ss,COUNT(*) from sp_pass_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(pass_time) group by ss;
-- 按天统计
select DATE_FORMAT('2020-01-11','%Y%-%m-%d') days,count(*) count from sp_pass_record group by days;
-- 按周统计
select DATE_FORMAT('2020-01-10 18:31:37','%Y-%u') weeks,count(*) count from sp_pass_record group by weeks;
-- 按月统计
select DATE_FORMAT('2020-01-10 18:31:37','%Y-%m') months,count(*) count from sp_pass_record group by months;
-- 统计最近七天内的数据并按天分组
SELECT
DATE_FORMAT(pass_time, '%Y-%m-%d' ) days,
count(*) count
FROM
(SELECT * FROM sp_pass_record WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY ) <= date(pass_time) ) as da
GROUP BY days;
-- 查询一天中每一个小时的记录数量
SELECT DATE_FORMAT(pass_time, '%k' ) hour,count(*) count
FROM (select * from sp_pass_record where to_days(pass_time) = to_days(now())) as da
GROUP BY hour;
-- 查询一天中每一个小时的记录数量
SELECT HOUR(e.pass_time) as Hour,count(*) as Count
FROM sp_pass_record e
WHERE e.pass_time >= str_to_date('2020-01-17 00:00:00','%Y-%m-%d %T') AND e.pass_time < str_to_date('2020-01-17 23:59:59','%Y-%m-%d %T')
GROUP BY HOUR(e.pass_time) ORDER BY Hour(e.pass_time)
-------------------------------------------------------------------------------------------------------------------
-- 24小时统计
SELECT DATE_FORMAT(pass_time, '%k' ) hour,count(*) count
FROM sp_pass_record where to_days(pass_time) = to_days(now())-2
GROUP BY hour;
select @num:=@num+1,date_format(adddate('2020-01-19', INTERVAL @num HOUR),'%k') as hour
from sp_pass_record,(select @num:=0) t
where adddate('2020-01-19', INTERVAL @num HOUR) <= date_format('2020-01-20','%Y-%m-%d')
-- 24小时补全
select @num:=@num+1,date_format(adddate(now(), INTERVAL @num HOUR),'%k') as hour
from sp_pass_record,(select @num:=0) t
where adddate(now(), INTERVAL @num HOUR) <= date_format('2020-01-20','%Y-%m-%d')
SELECT a.num,a.hour,b.hour,IFNULL(b.count,0) count FROM
(select @num:=@num+1 as num,date_format(adddate('2020-01-18', INTERVAL @num HOUR),'%k') as hour
from sp_pass_record,(select @num:=0) t
where adddate('2020-01-18', INTERVAL @num HOUR) <= date_format('2020-01-19','%Y-%m-%d')
) a
LEFT JOIN
(SELECT DATE_FORMAT(pass_time, '%k' ) hour,count(*) count
FROM sp_pass_record
where pass_time BETWEEN '2020-01-17' and '2020-01-18' GROUP BY hour
) b
on a.hour = b.hour
SQL-统计查询
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1,先实现多表查询: (可以发现两个集合发生了乘积,这叫笛卡尔积问题。) 消除笛卡尔积: (这只是消除了显示的笛卡...
- SQL1999标准语法 在之前已经分析过的外链接的相关操作,但是在实现的过程中有一个问题"(+)"属于oracle...
- 最近在做的项目,有很多统计数据的地方,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,...