使用SQL实现车流量的计算的示例代码


Posted in SQL Server onFebruary 28, 2022

卡口转换率

将数据导入hive,通过SparkSql编写sql,实现不同业务的数据计算实现,主要讲述车辆卡口转换率,卡口转化率:主要计算不同卡口下车辆之间的流向,求出之间的转换率。

使用SQL实现车流量的计算的示例代码

1、查出每个地区下每个路段下的车流量

select
	car,
	monitor_id,
	action_time,
	ROW_NUMBER () OVER (PARTITION by car
ORDER by
	action_time) as n1
FROM
	traffic.hive_flow_action

此结果做为表1,方便后面错位连接使用

使用SQL实现车流量的计算的示例代码

2、通过错位连接获取每辆车的行车记录

通过表1的结果,与自身进行错位链接,并以车牌为分区,拼接经过卡口的过程

(select
	t1.car,
	t1.monitor_id,
	concat(t1.monitor_id,
	"->",
	t2.monitor_id) as way
from
	(
	select
		car,
		monitor_id,
		action_time,
		ROW_NUMBER () OVER (PARTITION by car
	ORDER by
		action_time) as n1
	FROM
		traffic.hive_flow_action) t1
left join (
	select
		car,
		monitor_id,
		action_time,
		ROW_NUMBER () OVER (PARTITION by car
	ORDER by
		action_time) as n1
	FROM
		traffic.hive_flow_action) t2 on
	t1.car = t2.car
	and t1.n1 = t2.n1-1
where
	t2.action_time is not null)

使用SQL实现车流量的计算的示例代码

获取到每辆车的一个行车记录,经过的卡口

3、获取行车过程中的车辆数

获取卡口1~卡口2,…等的车辆数有哪些,即拿上面的行车记录字段进行分区在进行统计

(select
	s1.way,
	COUNT(1) sumCar
from
	--行车过程
(select
		t1.car,
		t1.monitor_id,
		concat(t1.monitor_id,
		"->",
		t2.monitor_id) as way
	from
		(
		select
			car,
			monitor_id,
			action_time,
			ROW_NUMBER () OVER (PARTITION by car
		ORDER by
			action_time) as n1
		FROM
			traffic.hive_flow_action) t1
	left join (
		select
			car,
			monitor_id,
			action_time,
			ROW_NUMBER () OVER (PARTITION by car
		ORDER by
			action_time) as n1
		FROM
			traffic.hive_flow_action) t2 on
		t1.car = t2.car
		and t1.n1 = t2.n1-1
	where
		t2.action_time is not null)s1
group by way)

使用SQL实现车流量的计算的示例代码

4、获取每个卡口的总车辆数

获取每个卡口最初的车辆数,方便后面拿行车轨迹车辆数/总车辆数,得出卡口之间的转换率

select
	monitor_id ,
	COUNT(1) sumall
from
	traffic.hive_flow_action
group by
	monitor_id

使用SQL实现车流量的计算的示例代码

5、求出卡口之间的转换率

select
	s2.way,
	s2.sumCar / s3.sumall zhl
from
	(
	select
		s1.way,
		COUNT(1) sumCar
	from
		--行车过程
(
		select
			t1.car,
			t1.monitor_id,
			concat(t1.monitor_id,
			"->",
			t2.monitor_id) as way
		from
			(
			select
				car,
				monitor_id,
				action_time,
				ROW_NUMBER () OVER (PARTITION by car
			ORDER by
				action_time) as n1
			FROM
				traffic.hive_flow_action) t1
		left join (
			select
				car,
				monitor_id,
				action_time,
				ROW_NUMBER () OVER (PARTITION by car
			ORDER by
				action_time) as n1
			FROM
				traffic.hive_flow_action) t2 on
			t1.car = t2.car
			and t1.n1 = t2.n1-1
		where
			t2.action_time is not null)s1
	group by
		way)s2
left join
	--每个卡口总车数
(
	select
		monitor_id ,
		COUNT(1) sumall
	from
		traffic.hive_flow_action
	group by
		monitor_id) s3 on
	split(s2.way,
	"->")[0]= s3.monitor_id

使用SQL实现车流量的计算的示例代码

 到此这篇关于使用SQL实现车流量的计算的示例代码的文章就介绍到这了,更多相关SQL 车流量内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

SQL Server 相关文章推荐
SQL Server——索引+基于单表的数据插入与简单查询【1】
Apr 05 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
sql通过日期判断年龄函数的示例代码
Jul 16 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL Server表分区删除详情
Oct 16 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
Apr 22 SQL Server
SqlServer常用函数及时间处理小结
May 08 SQL Server
Sql Server之数据类型详解
Feb 28 #SQL Server
sql server 累计求和实现代码
Feb 28 #SQL Server
SQL SERVER触发器详解
Feb 24 #SQL Server
SQL SERVER存储过程用法详解
Feb 24 #SQL Server
SQL SERVER实现连接与合并查询
Feb 24 #SQL Server
SQLServer中exists和except用法介绍
SQL Server2019数据库备份与还原脚本,数据库可批量备份
You might like
php生成二维码
2015/08/10 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
VBScript版代码高亮
2006/06/26 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
python selenium循环登陆网站的实现
2019/11/04 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
社区优秀志愿者先进事迹
2014/05/09 职场文书
2014年学生会工作总结
2014/11/07 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
nginx访问报403错误的几种情况详解
2022/07/23 Servers