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,否则会报错