中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用SQL實現車流量的計算

發布時間:2022-02-28 14:47:26 來源:億速云 閱讀:227 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“怎么使用SQL實現車流量的計算”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么使用SQL實現車流量的計算”這篇文章吧。

卡口轉換率

將數據導入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實現車流量的計算”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

黄陵县| 闽清县| 高雄县| 罗田县| 清徐县| 光山县| 商城县| 仁寿县| 辽源市| 盱眙县| 青海省| 大悟县| 叶城县| 缙云县| 康马县| 霍州市| 深圳市| 乌恰县| 新巴尔虎左旗| 洪洞县| 富裕县| 巴塘县| 杂多县| 福鼎市| 东宁县| 临江市| 通州市| 惠安县| 天台县| 盱眙县| 石林| 山丹县| 谢通门县| 蓬溪县| 东明县| 固镇县| 周至县| 吴川市| 巩留县| 淮滨县| 黔西|