使用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基本使用和简单的CRUD操作
Apr 05 SQL Server
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQLServer2019 数据库环境搭建与使用的实现
Apr 08 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
sql字段解析器的实现示例
Jun 23 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
SQL SERVER存储过程用法详解
Feb 24 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server中使用表变量和临时表
May 20 SQL Server
SQL Server删除表中的重复数据
May 25 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网站备份程序代码分享
2011/06/10 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python实现二分查找算法实例
2015/05/26 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python写入已存在的excel数据实例
2018/05/03 Python
python3实现点餐系统
2019/01/24 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python如何实现word批量转HTML
2020/09/30 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
优秀大学生推荐信范文
2013/11/28 职场文书
年检委托书
2014/08/30 职场文书
小学生优秀评语
2014/12/29 职场文书
医生个人年度总结
2015/02/28 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android