MySQL基本查询(单表)

MySQL基本查询(单表)

基本格式:

select * from 表名 where 条件

1.查询个数用count(*)

select 车牌,count(*) as count from 小数据1 group by 车牌 ORDER BY count DESC

2.从包含日期与时间的一列中

提取日期用DATE_FORMAT(时间,‘%Y-%c-%d’)

提取月份用DATE_FORMAT(入口收费时间, ‘%Y-%m’) = ‘2017-08’

select DATE_FORMAT(入口收费时间,'%Y-%m-%d') 起始日期,count(*) 数目 from 小数据1 
WHERE DATE_FORMAT(入口收费时间, '%Y-%m') = '2017-08' group by 起始日期;

或者MONTH(DATE_FORMAT(入口收费时间, ‘%Y-%m-%d’)) = 8

SELECT * FROM 小数据1 WHERE MONTH(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 8 AND DAYOFWEEK(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 3;

提取一个月每一天的日期用day(DATE_FORMAT(入口收费时间, ‘%Y-%m-%d’))

select day(DATE_FORMAT(入口收费时间, '%Y-%m-%d'))日期, count(*) 
from 小数据1 WHERE (MONTH(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 8) 
group by 日期

提取星期用DAYOFWEEK(DATE_FORMAT(入口收费时间, ‘%Y-%m-%d’))

SELECT DAYOFWEEK(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) 星期,count(*)交通量 
FROM airportroad_utf8 
WHERE MONTH(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 8 GROUP BY 星期

提取时间用DATE_FORMAT(入口收费时间,“%H”)

select *,count(*) as 数量 from airportroad_utf8
WHERE (DATE_FORMAT(入口收费时间,"%H")>7 and (DATE_FORMAT(入口收费时间,"%H")<9))
) 

按每五分钟的时间间隔提取数据量

SELECT time, COUNT( * ) AS num 
FROM
	(
	SELECT *,
		DATE_FORMAT(
			concat( date( 入口收费时间 ), ' ', HOUR (入口收费时间 ), ':', floor( MINUTE ( 入口收费时间 ) / 5 ) * 5 ),
			'%Y-%m-%d %H:%i' 
		) AS time 
	FROM airportroad_utf8 where (MONTH(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 8) and (起始站点 = '山前') 
)	a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

3.得到速度需要计算(公里10003.6/TIME_TO_SEC(TIMEDIFF(出口收费时间,入口收费时间 ))) as 速度

4.得到分组的结果用group by

5.得到分区段的结果用case when

select 速度段,count(*) as 数量 from(
select (公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` ))) as 速度,
case
when 公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` )) between 0 and 20 then '0-20'
when 公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` )) between 20 and 40 then '20-40'
when 公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` )) between 40 and 60 then '40-60'
when 公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` )) between 60 and 80 then '60-80'
when 公里*1000*3.6/TIME_TO_SEC(TIMEDIFF(`出口收费时间`,`入口收费时间` )) > 80 then '80+'
end as 速度段
FROM airportroad_utf8
WHERE (MONTH(DATE_FORMAT(入口收费时间, '%Y-%m-%d')) = 8) and  ((DAYOFWEEK(DATE_FORMAT(入口收费时间, '%Y-%m-%d'))=1) or  (DAYOFWEEK(DATE_FORMAT(入口收费时间, '%Y-%m-%d'))=7))
and (DATE_FORMAT(入口收费时间,"%H")>17 and (DATE_FORMAT(入口收费时间,"%H")<19))
)  
a GROUP BY 速度段

用case when时,其实就是建了一个虚拟的表,在这个虚拟的表里查询,不要忘记后面这个a,否则会报错

猜你喜欢

转载自blog.csdn.net/weixin_43697614/article/details/124117187