comparison schema/reports.sql @ 5420:851c14d57680 marking-single-beam

Merged default into marking-single-beam branch.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 08 Jul 2021 00:14:58 +0200
parents fbad74acd23f
children 47ee6ecf94de
comparison
equal deleted inserted replaced
5419:202715173935 5420:851c14d57680
21 generate_series( ym, 21 generate_series( ym,
22 ( ym + interval '1 month' 22 ( ym + interval '1 month'
23 - interval '1 day'), 23 - interval '1 day'),
24 '1 day'::interval ) d ), 24 '1 day'::interval ) d ),
25 g AS ( SELECT d.ym, d.d AS day, (location).country_code AS cc, 25 g AS ( SELECT d.ym, d.d AS day, (location).country_code AS cc,
26 min((location).hectometre) AS hm,
26 objname, array_agg(distinct(location)) AS locations 27 objname, array_agg(distinct(location)) AS locations
27 FROM waterway.gauges,d 28 FROM waterway.gauges,d
28 GROUP BY objname,d.d,(location).country_code,d.ym ), 29 GROUP BY objname,d.d,(location).country_code,d.ym ),
29 measure AS ( 30 measure AS (
30 SELECT g.ym, g.cc, g.objname, g.day, 31 SELECT g.ym, g.cc, g.hm, g.objname, g.day,
31 CASE WHEN count(measure_date) = 0 32 CASE WHEN count(measure_date) = 0
32 THEN 1 ELSE 0 END AS missing 33 THEN 1 ELSE 0 END AS missing
33 FROM g 34 FROM g
34 LEFT OUTER JOIN waterway.gauge_measurements gm 35 LEFT OUTER JOIN waterway.gauge_measurements gm
35 ON ARRAY[location] <@ g.locations 36 ON ARRAY[location] <@ g.locations
36 AND g.day <= measure_date 37 AND g.day <= measure_date
37 AND measure_date < (g.day + interval '1 day') 38 AND measure_date < (g.day + interval '1 day')
38 GROUP BY g.objname,g.day,g.ym,g.cc ) 39 GROUP BY g.objname,g.day,g.ym,g.cc,g.hm )
39 SELECT cc, ym AS month, objname, sum(missing) AS daynodata 40 SELECT cc, ym AS month, objname, hm, sum(missing) AS daynodata
40 FROM measure 41 FROM measure
41 GROUP BY cc, ym, objname; 42 GROUP BY cc, ym, objname, hm;
42 43
43 CREATE MATERIALIZED VIEW waterway.dqr_bottleneck_stats AS 44 CREATE MATERIALIZED VIEW waterway.dqr_bottleneck_stats AS
44 WITH d AS ( SELECT ym::date 45 WITH d AS ( SELECT ym::date
45 FROM generate_series( '2019-10-01'::date, 46 FROM generate_series( '2019-10-01'::date,
46 now() - interval '1 day', 47 now() - interval '1 day',
47 '1 month'::interval ) ym), 48 '1 month'::interval ) ym),
48 bn AS ( SELECT DISTINCT objnam, responsible_country AS cc 49 bn AS ( SELECT DISTINCT objnam, responsible_country AS cc,
49 FROM waterway.bottlenecks ), 50 min ((lower(stretch)).hectometre) AS hm
51 FROM waterway.bottlenecks GROUP BY objnam,cc),
50 bid AS (SELECT objnam, array_agg(distinct(bottleneck_id)) AS ids 52 bid AS (SELECT objnam, array_agg(distinct(bottleneck_id)) AS ids
51 FROM waterway.bottlenecks GROUP BY objnam) 53 FROM waterway.bottlenecks GROUP BY objnam)
52 SELECT bn.cc, d.ym AS month, bid.objnam, 54 SELECT bn.cc, bn.hm, d.ym AS month, bid.objnam,
53 COALESCE(count(distinct(sr.date_info)),0) AS srcnt, 55 COALESCE(count(distinct(sr.date_info)),0) AS srcnt,
54 COALESCE(count(distinct(efa.measure_date)),0) AS fwacnt 56 COALESCE(count(distinct(efa.measure_date)),0) AS fwacnt
55 FROM bn, bid 57 FROM bn, bid
56 CROSS JOIN d 58 CROSS JOIN d
57 LEFT OUTER JOIN waterway.sounding_results sr 59 LEFT OUTER JOIN waterway.sounding_results sr
64 ON fairway_availability_id = fa.id 66 ON fairway_availability_id = fa.id
65 AND d.ym <= efa.measure_date 67 AND d.ym <= efa.measure_date
66 AND efa.measure_date < (d.ym + interval '1 month') 68 AND efa.measure_date < (d.ym + interval '1 month')
67 AND efa.measure_type = 'Measured' 69 AND efa.measure_type = 'Measured'
68 WHERE bid.objnam = bn.objnam 70 WHERE bid.objnam = bn.objnam
69 GROUP BY bn.cc, d.ym, bid.objnam; 71 GROUP BY bn.cc, bn.hm, d.ym, bid.objnam;
70 72
71 -- We need a wrapper procedure with owner rights for 73 -- We need a wrapper procedure with owner rights for
72 -- the refresh, as (from the PGSQL manual): "REFRESH MATERIALIZED VIEW 74 -- the refresh, as (from the PGSQL manual): "REFRESH MATERIALIZED VIEW
73 -- completely replaces the contents of a materialized view. To execute 75 -- completely replaces the contents of a materialized view. To execute
74 -- this command you must be the owner of the materialized view."" 76 -- this command you must be the owner of the materialized view.""