@golemio/waze-tt 1.1.8-dev.849314119 → 1.1.8-dev.849489204
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20230425125019-tskbmii20230425-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20230425125019-tskbmii20230425-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
-- tmp.v_tsk_bm2_route source
|
|
2
|
+
|
|
3
|
+
CREATE OR REPLACE VIEW analytic.v_tsk_bm2_route
|
|
4
|
+
AS SELECT DISTINCT ON ((wazett_routes.name::json ->> 'project'::text), (wazett_routes.name::json ->> 'route number'::text), (wazett_routes.name::json ->> 'dir'::text)) wazett_routes.id,
|
|
5
|
+
concat(wazett_routes.name::json ->> 'route number'::text, ' ', wazett_routes.name::json ->> 'name'::text) AS name,
|
|
6
|
+
true AS is_trasa,
|
|
7
|
+
false AS is_usek,
|
|
8
|
+
false AS is_opacny_smer,
|
|
9
|
+
wazett_routes.name::json ->> 'name'::text AS name_trasa,
|
|
10
|
+
"substring"(wazett_routes.name,
|
|
11
|
+
CASE
|
|
12
|
+
WHEN "position"(wazett_routes.name, ' ÚS'::text) > 0 THEN "position"(wazett_routes.name, ' ÚS'::text) + 4
|
|
13
|
+
ELSE length(wazett_routes.name) + 1
|
|
14
|
+
END,
|
|
15
|
+
CASE
|
|
16
|
+
WHEN "position"(wazett_routes.name, ' OS'::text) > 0 THEN "position"(wazett_routes.name, ' OS'::text) - "position"(wazett_routes.name, ' ÚS'::text) - 4
|
|
17
|
+
ELSE length(wazett_routes.name) - "position"(wazett_routes.name, ' ÚS'::text)
|
|
18
|
+
END) AS name_usek,
|
|
19
|
+
st_astext(wazett_routes.line) AS line,
|
|
20
|
+
concat('#', "left"(lpad(to_hex((wazett_routes.id::double precision * character_length(wazett_routes.name)::double precision / (( SELECT min(wazett_routes_1.id * character_length(wazett_routes_1.name)) AS min
|
|
21
|
+
FROM wazett.wazett_routes wazett_routes_1))::double precision * 10000000::double precision)::bigint), 6, '0'::text), 6)) AS color
|
|
22
|
+
FROM wazett.wazett_routes
|
|
23
|
+
WHERE (wazett_routes.feed_id = ANY (ARRAY[9, 10])) AND wazett_routes.name ~~ '{%'::text AND (wazett_routes.name::json ->> 'project'::text) = 'TSK BM II'::text
|
|
24
|
+
ORDER BY (wazett_routes.name::json ->> 'project'::text), (wazett_routes.name::json ->> 'route number'::text), (wazett_routes.name::json ->> 'dir'::text), wazett_routes.created_at DESC;
|
|
25
|
+
|
|
26
|
+
-- tmp.mv_tsk_bm2_normal source
|
|
27
|
+
|
|
28
|
+
CREATE MATERIALIZED VIEW analytic.mv_tsk_bm2_normal
|
|
29
|
+
TABLESPACE pg_default
|
|
30
|
+
AS SELECT vtbh.name,
|
|
31
|
+
vtbh.hodina,
|
|
32
|
+
round(avg(vtbh.avg_time), 2) AS avg_time,
|
|
33
|
+
round(avg(vtbh.avg_speed)) AS avg_speed
|
|
34
|
+
FROM ( SELECT rl.name,
|
|
35
|
+
rl.ts::date AS datum,
|
|
36
|
+
date_part('hour'::text, rl.ts) AS hodina,
|
|
37
|
+
(to_char(date_part('hour'::text, rl.ts), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, rl.ts) + 1::double precision, '09'::text) AS cas_interval,
|
|
38
|
+
rl.avg_time,
|
|
39
|
+
rl.avg_speed
|
|
40
|
+
FROM ( SELECT rl_1.route_id,
|
|
41
|
+
vtbr.name,
|
|
42
|
+
date_trunc('hour'::text, to_timestamp((rl_1.update_time / 1000)::double precision)) AS ts,
|
|
43
|
+
round(avg(rl_1."time"), 2) AS avg_time,
|
|
44
|
+
round(avg(rl_1.length * 1000 / (NULLIF(rl_1."time", 0) * 360)), 2) AS avg_speed
|
|
45
|
+
FROM wazett.wazett_route_lives rl_1
|
|
46
|
+
JOIN analytic.v_tsk_bm2_route vtbr ON vtbr.id = rl_1.route_id
|
|
47
|
+
WHERE rl_1.update_time >= '1681516800000'::bigint
|
|
48
|
+
GROUP BY vtbr.name, rl_1.route_id, (date_trunc('hour'::text, to_timestamp((rl_1.update_time / 1000)::double precision)))) rl) vtbh
|
|
49
|
+
WHERE vtbh.datum >= '2023-04-15'::date AND vtbh.datum <= '2023-05-01'::date AND (date_part('dow'::text, vtbh.datum) = ANY (ARRAY[2::double precision, 3::double precision, 4::double precision]))
|
|
50
|
+
GROUP BY vtbh.name, vtbh.hodina
|
|
51
|
+
WITH DATA;
|
|
52
|
+
|
|
53
|
+
-- tmp.tsk_bm2_data_all definition
|
|
54
|
+
|
|
55
|
+
CREATE TABLE analytic.tsk_bm2_data_all (
|
|
56
|
+
"name" text NOT NULL,
|
|
57
|
+
name_trasa text NOT NULL,
|
|
58
|
+
name_usek text NOT NULL,
|
|
59
|
+
smer text NOT NULL,
|
|
60
|
+
datum date NOT NULL,
|
|
61
|
+
cas_interval text NOT NULL,
|
|
62
|
+
avg_time numeric NULL,
|
|
63
|
+
avg_speed numeric NULL,
|
|
64
|
+
normal_avg_time numeric NULL,
|
|
65
|
+
normal_avg_speed numeric NULL
|
|
66
|
+
);
|
|
67
|
+
CREATE UNIQUE INDEX tsk_bm2_data_all_pkey ON analytic.tsk_bm2_data_all USING btree (name, name_trasa, name_usek, smer, datum, cas_interval);
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
-- tmp.tsk_bm2_route_hour_core definition
|
|
71
|
+
|
|
72
|
+
-- Drop table
|
|
73
|
+
|
|
74
|
+
-- DROP TABLE tmp.tsk_bm2_route_hour_core;
|
|
75
|
+
|
|
76
|
+
CREATE TABLE analytic.tsk_bm2_route_hour_core (
|
|
77
|
+
"name" text NOT NULL,
|
|
78
|
+
datum date NOT NULL,
|
|
79
|
+
hodina float8 NOT NULL,
|
|
80
|
+
cas_interval text NOT NULL,
|
|
81
|
+
avg_time numeric NULL,
|
|
82
|
+
avg_speed numeric NULL,
|
|
83
|
+
CONSTRAINT tsk_bm2_route_hour_core_pkey PRIMARY KEY (name, datum, hodina, cas_interval)
|
|
84
|
+
);
|
|
85
|
+
CREATE INDEX tsk_bm2_route_hour_core_date ON analytic.tsk_bm2_route_hour_core USING btree (datum);
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
CREATE OR REPLACE PROCEDURE analytic.update_tsk_bm2()
|
|
89
|
+
LANGUAGE plpgsql
|
|
90
|
+
AS $procedure$
|
|
91
|
+
declare
|
|
92
|
+
lastupdatetimestamp timestamptz;
|
|
93
|
+
lastupdateunix bigint;
|
|
94
|
+
begin
|
|
95
|
+
begin
|
|
96
|
+
select
|
|
97
|
+
case
|
|
98
|
+
when start_day is not null
|
|
99
|
+
then start_day
|
|
100
|
+
else '2022-01-01'
|
|
101
|
+
end as start_day_from into lastupdatetimestamp
|
|
102
|
+
from (select max(datum)-interval '1 days' start_day from analytic.tsk_bm2_route_hour_core) malastranamax;
|
|
103
|
+
|
|
104
|
+
lastupdateunix := extract ('epoch' from lastupdatetimestamp) * 1000;
|
|
105
|
+
|
|
106
|
+
-- dopoctu hodinovou agregaci (podobné v_mala_strana_route_hour_core) POT5EBUJEME TAKTO?
|
|
107
|
+
insert into analytic.tsk_bm2_route_hour_core
|
|
108
|
+
SELECT
|
|
109
|
+
wdrn.name,
|
|
110
|
+
rl.ts::date AS datum,
|
|
111
|
+
date_part('hour'::text, rl.ts) AS hodina,
|
|
112
|
+
(to_char(date_part('hour'::text, rl.ts), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, rl.ts) + 1::double precision, '09'::text) AS cas_interval,
|
|
113
|
+
avg_time,
|
|
114
|
+
avg_speed
|
|
115
|
+
FROM (
|
|
116
|
+
select
|
|
117
|
+
route_id
|
|
118
|
+
-- timezone('Europe/Prague'::text, to_timestamp((update_time / 1000)::double precision)::timestamp without time zone)
|
|
119
|
+
,date_trunc('hour', to_timestamp((update_time / 1000))::timestamp) as ts
|
|
120
|
+
,round(avg(time), 2) AS avg_time
|
|
121
|
+
,round(avg(rl.length * 1000 / (nullif(rl."time", 0) * 360)), 2) AS avg_speed
|
|
122
|
+
from wazett.wazett_route_lives rl
|
|
123
|
+
where
|
|
124
|
+
-- route_id = 22706 and
|
|
125
|
+
rl.update_time > lastupdateunix and
|
|
126
|
+
rl.length > 0
|
|
127
|
+
group by 1,2) rl
|
|
128
|
+
JOIN analytic.v_tsk_bm2_route wdrn ON wdrn.id = rl.route_id
|
|
129
|
+
ON CONFLICT (name,datum,hodina,cas_interval)
|
|
130
|
+
DO update
|
|
131
|
+
SET avg_time = EXCLUDED.avg_time,
|
|
132
|
+
avg_speed = EXCLUDED.avg_speed
|
|
133
|
+
;
|
|
134
|
+
|
|
135
|
+
insert into analytic.tsk_bm2_data_all
|
|
136
|
+
WITH
|
|
137
|
+
v_ms_route_hour as (
|
|
138
|
+
SELECT p.name,
|
|
139
|
+
p.datum,
|
|
140
|
+
p.hodina,
|
|
141
|
+
p.cas_interval,
|
|
142
|
+
p.avg_time,
|
|
143
|
+
p.avg_speed,
|
|
144
|
+
n.avg_time AS normal_avg_time,
|
|
145
|
+
n.avg_speed AS normal_avg_speed
|
|
146
|
+
FROM analytic.tsk_bm2_route_hour_core p
|
|
147
|
+
LEFT JOIN analytic.mv_tsk_bm2_normal n ON n.name = p.name AND p.hodina = n.hodina
|
|
148
|
+
where datum > lastupdatetimestamp
|
|
149
|
+
),
|
|
150
|
+
-- konec v_ms_route_hour
|
|
151
|
+
v_ms_union_time_interval as (
|
|
152
|
+
WITH hodiny AS (
|
|
153
|
+
SELECT brh.name,
|
|
154
|
+
brh.datum,
|
|
155
|
+
brh.hodina,
|
|
156
|
+
brh.cas_interval,
|
|
157
|
+
brh.avg_time,
|
|
158
|
+
brh.avg_speed,
|
|
159
|
+
brh.normal_avg_time,
|
|
160
|
+
brh.normal_avg_speed
|
|
161
|
+
FROM v_ms_route_hour brh
|
|
162
|
+
WHERE brh.datum < CURRENT_DATE OR brh.hodina < date_part('hour'::text, now())
|
|
163
|
+
), den AS (
|
|
164
|
+
SELECT hodiny.name,
|
|
165
|
+
hodiny.datum,
|
|
166
|
+
'0 - 24h'::text AS cas_interval,
|
|
167
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
168
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
169
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
170
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
171
|
+
FROM hodiny
|
|
172
|
+
WHERE hodiny.datum < CURRENT_DATE
|
|
173
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
174
|
+
), h15_18 AS (
|
|
175
|
+
SELECT hodiny.name,
|
|
176
|
+
hodiny.datum,
|
|
177
|
+
'15 -18'::text AS cas_interval,
|
|
178
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
179
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
180
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
181
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
182
|
+
FROM hodiny
|
|
183
|
+
WHERE hodiny.hodina >= 15::double precision AND hodiny.hodina <= 17::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 17::double precision)
|
|
184
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
185
|
+
), h22_6 AS (
|
|
186
|
+
SELECT hodiny.name,
|
|
187
|
+
hodiny.datum,
|
|
188
|
+
'22 - 06'::text AS cas_interval,
|
|
189
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
190
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
191
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
192
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
193
|
+
FROM hodiny
|
|
194
|
+
WHERE NOT (hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision) AND hodiny.datum < CURRENT_DATE
|
|
195
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
196
|
+
), h6_22 AS (
|
|
197
|
+
SELECT hodiny.name,
|
|
198
|
+
hodiny.datum,
|
|
199
|
+
'06 - 22'::text AS cas_interval,
|
|
200
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
201
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
202
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
203
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
204
|
+
FROM hodiny
|
|
205
|
+
WHERE hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 21::double precision)
|
|
206
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
207
|
+
), h7_10 AS (
|
|
208
|
+
SELECT hodiny.name,
|
|
209
|
+
hodiny.datum,
|
|
210
|
+
'07 - 10'::text AS cas_interval,
|
|
211
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
212
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
213
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
214
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
215
|
+
FROM hodiny
|
|
216
|
+
WHERE hodiny.hodina >= 7::double precision AND hodiny.hodina <= 9::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 10::double precision)
|
|
217
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
218
|
+
), h7_11_15_19 AS (
|
|
219
|
+
SELECT hodiny.name,
|
|
220
|
+
hodiny.datum,
|
|
221
|
+
'07 - 11, 15 - 19'::text AS cas_interval,
|
|
222
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
223
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
224
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
225
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
226
|
+
FROM hodiny
|
|
227
|
+
WHERE (hodiny.hodina >= 7::double precision AND hodiny.hodina <= 10::double precision OR hodiny.hodina >= 15::double precision AND hodiny.hodina <= 18::double precision) AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 18::double precision)
|
|
228
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
229
|
+
)
|
|
230
|
+
SELECT hodiny.name,
|
|
231
|
+
hodiny.datum,
|
|
232
|
+
hodiny.cas_interval,
|
|
233
|
+
hodiny.avg_time,
|
|
234
|
+
hodiny.avg_speed,
|
|
235
|
+
hodiny.normal_avg_time,
|
|
236
|
+
hodiny.normal_avg_speed
|
|
237
|
+
FROM hodiny
|
|
238
|
+
UNION ALL
|
|
239
|
+
SELECT den.name,
|
|
240
|
+
den.datum,
|
|
241
|
+
den.cas_interval,
|
|
242
|
+
den.avg_time,
|
|
243
|
+
den.avg_speed,
|
|
244
|
+
den.normal_avg_time,
|
|
245
|
+
den.normal_avg_speed
|
|
246
|
+
FROM den
|
|
247
|
+
UNION ALL
|
|
248
|
+
SELECT h15_18.name,
|
|
249
|
+
h15_18.datum,
|
|
250
|
+
h15_18.cas_interval,
|
|
251
|
+
h15_18.avg_time,
|
|
252
|
+
h15_18.avg_speed,
|
|
253
|
+
h15_18.normal_avg_time,
|
|
254
|
+
h15_18.normal_avg_speed
|
|
255
|
+
FROM h15_18
|
|
256
|
+
UNION ALL
|
|
257
|
+
SELECT h22_6.name,
|
|
258
|
+
h22_6.datum,
|
|
259
|
+
h22_6.cas_interval,
|
|
260
|
+
h22_6.avg_time,
|
|
261
|
+
h22_6.avg_speed,
|
|
262
|
+
h22_6.normal_avg_time,
|
|
263
|
+
h22_6.normal_avg_speed
|
|
264
|
+
FROM h22_6
|
|
265
|
+
UNION ALL
|
|
266
|
+
SELECT h6_22.name,
|
|
267
|
+
h6_22.datum,
|
|
268
|
+
h6_22.cas_interval,
|
|
269
|
+
h6_22.avg_time,
|
|
270
|
+
h6_22.avg_speed,
|
|
271
|
+
h6_22.normal_avg_time,
|
|
272
|
+
h6_22.normal_avg_speed
|
|
273
|
+
FROM h6_22
|
|
274
|
+
UNION ALL
|
|
275
|
+
SELECT h7_10.name,
|
|
276
|
+
h7_10.datum,
|
|
277
|
+
h7_10.cas_interval,
|
|
278
|
+
h7_10.avg_time,
|
|
279
|
+
h7_10.avg_speed,
|
|
280
|
+
h7_10.normal_avg_time,
|
|
281
|
+
h7_10.normal_avg_speed
|
|
282
|
+
FROM h7_10
|
|
283
|
+
UNION ALL
|
|
284
|
+
SELECT h7_11_15_19.name,
|
|
285
|
+
h7_11_15_19.datum,
|
|
286
|
+
h7_11_15_19.cas_interval,
|
|
287
|
+
h7_11_15_19.avg_time,
|
|
288
|
+
h7_11_15_19.avg_speed,
|
|
289
|
+
h7_11_15_19.normal_avg_time,
|
|
290
|
+
h7_11_15_19.normal_avg_speed
|
|
291
|
+
FROM h7_11_15_19
|
|
292
|
+
),
|
|
293
|
+
-----------------------
|
|
294
|
+
data1 AS (
|
|
295
|
+
SELECT
|
|
296
|
+
trasy.name,
|
|
297
|
+
trasy.name_trasa,
|
|
298
|
+
trasy.name_usek,
|
|
299
|
+
CASE
|
|
300
|
+
WHEN trasy.is_opacny_smer THEN 'Zpět'::text
|
|
301
|
+
ELSE 'Tam'::text
|
|
302
|
+
END AS smer,
|
|
303
|
+
vbu.datum,
|
|
304
|
+
vbu.cas_interval,
|
|
305
|
+
vbu.avg_time,
|
|
306
|
+
vbu.avg_speed,
|
|
307
|
+
vbu.normal_avg_time,
|
|
308
|
+
vbu.normal_avg_speed
|
|
309
|
+
FROM v_ms_union_time_interval vbu
|
|
310
|
+
JOIN analytic.v_tsk_bm2_route trasy ON trasy.name = vbu.name
|
|
311
|
+
),
|
|
312
|
+
data2 AS (
|
|
313
|
+
SELECT
|
|
314
|
+
data1.name_trasa,
|
|
315
|
+
data1.name_usek,
|
|
316
|
+
'Oba'::text AS smer,
|
|
317
|
+
data1.datum,
|
|
318
|
+
data1.cas_interval,
|
|
319
|
+
sum(data1.avg_time) AS avg_time,
|
|
320
|
+
avg(data1.avg_speed) AS avg_speed,
|
|
321
|
+
sum(data1.normal_avg_time) AS normal_avg_time,
|
|
322
|
+
avg(data1.normal_avg_speed) AS normal_avg_speed
|
|
323
|
+
FROM data1
|
|
324
|
+
GROUP BY data1.name_trasa, data1.name_usek, 'Oba'::text, data1.datum, data1.cas_interval
|
|
325
|
+
)
|
|
326
|
+
SELECT data1.name,
|
|
327
|
+
data1.name_trasa,
|
|
328
|
+
data1.name_usek,
|
|
329
|
+
data1.smer,
|
|
330
|
+
data1.datum,
|
|
331
|
+
data1.cas_interval,
|
|
332
|
+
data1.avg_time,
|
|
333
|
+
data1.avg_speed,
|
|
334
|
+
data1.normal_avg_time,
|
|
335
|
+
data1.normal_avg_speed
|
|
336
|
+
FROM data1
|
|
337
|
+
UNION
|
|
338
|
+
SELECT vbt.name,
|
|
339
|
+
data2.name_trasa,
|
|
340
|
+
data2.name_usek,
|
|
341
|
+
data2.smer,
|
|
342
|
+
data2.datum,
|
|
343
|
+
data2.cas_interval,
|
|
344
|
+
data2.avg_time,
|
|
345
|
+
data2.avg_speed,
|
|
346
|
+
data2.normal_avg_time,
|
|
347
|
+
data2.normal_avg_speed
|
|
348
|
+
FROM data2
|
|
349
|
+
JOIN analytic.v_tsk_bm2_route vbt ON vbt.name_trasa = data2.name_trasa AND vbt.name_usek = data2.name_usek AND NOT vbt.is_opacny_smer
|
|
350
|
+
on conflict (name,name_trasa,name_usek,smer,datum,cas_interval)
|
|
351
|
+
do update
|
|
352
|
+
SET avg_time = EXCLUDED.avg_time,
|
|
353
|
+
avg_speed = EXCLUDED.avg_speed,
|
|
354
|
+
normal_avg_time = EXCLUDED.normal_avg_time,
|
|
355
|
+
normal_avg_speed = EXCLUDED.normal_avg_speed;
|
|
356
|
+
end;
|
|
357
|
+
end;
|
|
358
|
+
$procedure$
|
|
359
|
+
;
|