使用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 相关文章推荐
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
SQL Server中交叉联接的用法详解
Apr 22 SQL Server
sql查询结果列拼接成逗号分隔的字符串方法
May 25 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
sql server删除前1000行数据的方法实例
Aug 30 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 SQL Server
详解SQL报错盲注
Jul 23 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
function.inc.php超越php
2006/12/09 PHP
php简单防盗链实现方法
2015/07/29 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python实现360皮肤按钮控件示例
2014/02/21 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Django中的ajax请求
2018/10/19 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
大学生应聘自荐信
2013/10/11 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
善意的谎言事例
2014/02/15 职场文书
售后客服工作职责
2014/06/16 职场文书
语文教育专业求职信
2014/06/28 职场文书
无私奉献演讲稿
2014/09/04 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
2014年校长工作总结
2014/12/11 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python