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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tango棒棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值