Replacing $Id stuff with filename.
[gpstools.git] / postgres / create_views.sql
blob429548fc058179c7689d0efccc4176193ece1e9a
1 -- create_views.sql
2 -- File ID: 24babc2a-fafb-11dd-96fe-000475e441b9
4 -- siste_aar: List ut alle plasser siste år, DISTINCT ON name og hver uke
5 CREATE OR REPLACE VIEW siste_aar -- {{{
6     AS SELECT * FROM (
7         SELECT DISTINCT ON (
8             name, date_trunc('week', date)
9         ) *
10         FROM logg
11         WHERE date > now() + interval '1 year ago'
12     ) AS s
13     ORDER BY date; -- }}}
15 -- siste_halvaar: List ut alle plasser siste halvår, DISTINCT ON name og hver uke
16 CREATE OR REPLACE VIEW siste_halvaar -- {{{
17     AS SELECT * FROM (
18         SELECT DISTINCT ON (
19             name, date_trunc('week', date)
20         ) *
21         FROM logg
22         WHERE date > now() + interval '0.5 year ago'
23     ) AS s
24     ORDER BY date; -- }}}
26 -- siste_maaned: List ut alle plasser siste måned, DISTINCT ON name og hver time
27 CREATE OR REPLACE VIEW siste_maaned -- {{{
28     AS SELECT * FROM (
29         SELECT DISTINCT ON (
30             name, date_trunc('hour', date)
31         ) *
32         FROM logg
33         WHERE date > now() + interval '1 month ago'
34     ) AS s
35     ORDER BY date; -- }}}
37 -- siste_uke: List ut alle plasser siste uka, DISTINCT ON name og hver time
38 CREATE OR REPLACE VIEW siste_uke -- {{{
39     AS SELECT * FROM (
40         SELECT DISTINCT ON (
41             name, date_trunc('hour', date)
42         ) *
43         FROM logg
44         WHERE date > now()+interval '1 week ago'
45     ) AS s
46     ORDER BY date; -- }}}
48 -- siste_dogn: List ut alle plasser siste døgn, DISTINCT ON name og hvert minutt
49 CREATE OR REPLACE VIEW siste_dogn -- {{{
50     AS SELECT * FROM (
51         SELECT DISTINCT ON (
52             name, date_trunc('minute', date)
53         ) *
54         FROM logg
55         WHERE date > now()+interval '1 day ago'
56     ) AS s
57     ORDER BY date; -- }}}
59 /*** Intervaller ***/
61 CREATE OR REPLACE VIEW minutt -- {{{
62     AS SELECT * FROM (
63         SELECT DISTINCT ON (
64             date_trunc('minute', date)
65         ) *
66         FROM logg
67     ) AS s
68     ORDER BY date; -- }}}
69 CREATE OR REPLACE VIEW minuttname -- {{{
70     AS SELECT * FROM (
71         SELECT DISTINCT ON (
72             date_trunc('minute', date),
73             name
74         ) *
75         FROM logg
76     ) AS s
77     ORDER BY date; -- }}}
78 CREATE OR REPLACE VIEW hourname -- {{{
79     AS SELECT * FROM (
80         SELECT DISTINCT ON (
81             date_trunc('hour', date),
82             name
83         ) *
84         FROM logg
85     ) AS s
86     ORDER BY date; -- }}}
88 /*** Formater ***/
90 CREATE OR REPLACE VIEW closest AS -- {{{
91     SELECT * FROM (
92         SELECT DISTINCT ON (name) * FROM (
93             SELECT * FROM LOGG
94                 ORDER BY dist
95         ) AS b
96         WHERE name IS NOT NULL
97     ) AS a
98         ORDER BY date; -- }}}
100 CREATE OR REPLACE VIEW gpx AS -- {{{
101     SELECT '<trkpt lat="' || coor[0] || '" lon="' || coor[1] || '"> ' ||
102         '<ele>' || ele || '</ele> ' ||
103         '<time>' || date || '</time> ' ||
104     '</trkpt>'
105     AS gpx,
106     date, coor, ele, name, dist, description
107     FROM logg; -- }}}
109 CREATE OR REPLACE VIEW gpst AS -- {{{
110     SELECT date, coor, ele, name, dist,
111     '<tp> <time>' || date AT TIME ZONE 'UTC' || 'Z' || '</time> <lat>' || coor[0] || '</lat> <lon>' || coor[1] || '</lon> </tp>'
112     AS gpst
113     FROM logg; -- }}}
115 -- ev: Lister ut events sammen med loggen.
116 CREATE OR REPLACE VIEW ev AS -- {{{
117     SELECT * FROM (
118         SELECT     'gps' AS flag, date, coor, name || ' (' || dist || ')' AS name, ele::numeric(8,1), NULL AS descr
119             FROM logg
120         UNION ALL
121         SELECT   'event' AS flag, date, coor, NULL, NULL, descr AS descr
122             FROM events
123         UNION ALL
124         SELECT     'pic' AS flag, date, coor, filename, NULL, NULL
125             FROM pictures
126         UNION ALL
127         SELECT    'film' AS flag, date, coor, filename, NULL, descr
128             FROM film
129         UNION ALL
130         SELECT    'lyd' AS flag, date, coor, filename, NULL, descr
131             FROM lyd
132     ) AS u
133     ORDER BY date; -- }}}
135 CREATE OR REPLACE VIEW media AS -- {{{
136     SELECT 'film' AS what,
137         date,
138         filename,
139         clname(coor) AS name,
140         cldist(coor) AS dist,
141         coor
142         FROM film
143     UNION ALL
144     SELECT 'pic', date, filename, clname(coor), cldist(coor), coor
145         FROM pictures
146     UNION ALL
147     SELECT 'lyd', date, filename, clname(coor), cldist(coor), coor
148         FROM lyd
149     ORDER BY date;
151 -- wp: Lister ut veipunktene, sortert nord → sør, vest → øst
152 CREATE OR REPLACE VIEW wp AS -- {{{
153     SELECT
154         coor AS coor,
155         substr(name, 1, 20) AS name,
156         type AS type,
157         numpoints as nump,
158         substr(cmt, 1, 20) AS cmt,
159         ele AS ele,
160         time AS time
161         FROM wayp
162         ORDER BY coor[0] DESC, coor[1]; -- }}}