使用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 数据库,sa用户被锁定的问题
Jun 11 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
Sep 04 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
sql时间段切分实现每隔x分钟出一份高速门架车流量
Feb 28 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server Agent 服务无法启动
Apr 20 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
Get或Post提交值的非法数据处理
2006/10/09 PHP
深入php处理整数函数的详解
2013/06/09 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
Python编程入门的一些基本知识
2015/05/13 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python如何发布程序的详细教程
2018/10/09 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
公司端午节活动方案
2014/02/04 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
2015年社区工作总结
2015/04/08 职场文书
雾霾停课通知
2015/04/24 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android