mirror of
https://github.com/xbgmsharp/postgsail.git
synced 2025-09-17 11:17:46 +00:00
Add primary support for new stays,moorages,stats,timelapse views
This commit is contained in:
@@ -716,7 +716,7 @@ COMMENT ON FUNCTION
|
|||||||
IS 'Find all stay within 100m of moorage geopoint';
|
IS 'Find all stay within 100m of moorage geopoint';
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
-- API helper view
|
-- API helper views
|
||||||
--
|
--
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -792,7 +792,7 @@ COMMENT ON VIEW
|
|||||||
-- Stays web view
|
-- Stays web view
|
||||||
-- TODO group by month
|
-- TODO group by month
|
||||||
DROP VIEW IF EXISTS api.stays_view;
|
DROP VIEW IF EXISTS api.stays_view;
|
||||||
CREATE VIEW api.stays_view AS
|
CREATE VIEW api.stays_view AS -- TODO
|
||||||
SELECT
|
SELECT
|
||||||
concat(
|
concat(
|
||||||
extract(DAYS FROM (s.departed-s.arrived)::interval),
|
extract(DAYS FROM (s.departed-s.arrived)::interval),
|
||||||
@@ -820,6 +820,36 @@ COMMENT ON VIEW
|
|||||||
api.stays_view
|
api.stays_view
|
||||||
IS 'Stays web view';
|
IS 'Stays web view';
|
||||||
|
|
||||||
|
DROP VIEW IF EXISTS api.stay_view;
|
||||||
|
CREATE VIEW api.stay_view AS -- TODO missing arrival/departured from
|
||||||
|
SELECT
|
||||||
|
concat(
|
||||||
|
extract(DAYS FROM (s.departed-s.arrived)::interval),
|
||||||
|
' days',
|
||||||
|
--DATE_TRUNC('day', s.departed-s.arrived),
|
||||||
|
' stay at ',
|
||||||
|
s.name,
|
||||||
|
' in ',
|
||||||
|
RTRIM(TO_CHAR(s.departed, 'Month')),
|
||||||
|
' ',
|
||||||
|
TO_CHAR(s.departed, 'YYYY')
|
||||||
|
) as Name,
|
||||||
|
s.name AS Moorage,
|
||||||
|
(s.departed-s.arrived) AS Duration,
|
||||||
|
sa.description AS "Stayed at",
|
||||||
|
s.arrived AS "Arrival Time",
|
||||||
|
s.departed AS "Arrival Time",
|
||||||
|
s.notes AS "Notes"
|
||||||
|
FROM api.stays s, api.stays_at sa
|
||||||
|
WHERE departed is not null
|
||||||
|
AND s.name is not null
|
||||||
|
AND s.stay_code = sa.stay_code
|
||||||
|
ORDER BY s.arrived DESC;
|
||||||
|
-- Description
|
||||||
|
COMMENT ON VIEW
|
||||||
|
api.stay_view
|
||||||
|
IS 'Stay web view';
|
||||||
|
|
||||||
-- Moorages web view
|
-- Moorages web view
|
||||||
-- TODO, this is wrong using distinct (m.name) should be using postgis geog feature
|
-- TODO, this is wrong using distinct (m.name) should be using postgis geog feature
|
||||||
--DROP VIEW IF EXISTS api.moorages_view_old;
|
--DROP VIEW IF EXISTS api.moorages_view_old;
|
||||||
@@ -838,7 +868,7 @@ COMMENT ON VIEW
|
|||||||
|
|
||||||
-- the good way?
|
-- the good way?
|
||||||
DROP VIEW IF EXISTS api.moorages_view;
|
DROP VIEW IF EXISTS api.moorages_view;
|
||||||
CREATE OR REPLACE VIEW api.moorages_view AS
|
CREATE OR REPLACE VIEW api.moorages_view AS -- TODO
|
||||||
SELECT
|
SELECT
|
||||||
m.name AS Moorage,
|
m.name AS Moorage,
|
||||||
sa.description AS "Default Stay",
|
sa.description AS "Default Stay",
|
||||||
@@ -858,6 +888,23 @@ COMMENT ON VIEW
|
|||||||
api.moorages_view
|
api.moorages_view
|
||||||
IS 'Moorages web view';
|
IS 'Moorages web view';
|
||||||
|
|
||||||
|
DROP VIEW IF EXISTS api.moorage_view;
|
||||||
|
CREATE OR REPLACE VIEW api.moorage_view AS -- TODO
|
||||||
|
SELECT
|
||||||
|
m.name AS "Preferred Name",
|
||||||
|
m.stay_code AS "Default Stay Type",
|
||||||
|
m.home_flag AS "Home",
|
||||||
|
EXTRACT(DAY FROM justify_hours ( m.stay_duration )) AS "Total Stay",
|
||||||
|
m.reference_count AS "Arrivals & Departures",
|
||||||
|
m.notes,
|
||||||
|
m.geog,
|
||||||
|
FROM api.moorages m
|
||||||
|
WHERE m.name is not null;
|
||||||
|
-- Description
|
||||||
|
COMMENT ON VIEW
|
||||||
|
api.moorage_view
|
||||||
|
IS 'Moorage web view';
|
||||||
|
|
||||||
-- All moorage in 100 meters from the start of a logbook.
|
-- All moorage in 100 meters from the start of a logbook.
|
||||||
-- ST_DistanceSphere Returns minimum distance in meters between two lon/lat points.
|
-- ST_DistanceSphere Returns minimum distance in meters between two lon/lat points.
|
||||||
--SELECT
|
--SELECT
|
||||||
@@ -882,7 +929,7 @@ COMMENT ON VIEW
|
|||||||
----> select sum(l.duration) as "Total Time Underway" from api.logbook l;
|
----> select sum(l.duration) as "Total Time Underway" from api.logbook l;
|
||||||
-- Longest Nonstop Sail from logbook, eg longest trip duration and distance
|
-- Longest Nonstop Sail from logbook, eg longest trip duration and distance
|
||||||
----> select max(l.duration),max(l.distance) from api.logbook l;
|
----> select max(l.duration),max(l.distance) from api.logbook l;
|
||||||
CREATE VIEW api.stats_logs_view AS -- todo
|
CREATE VIEW api.stats_logs_view AS -- TODO
|
||||||
WITH
|
WITH
|
||||||
meta AS (
|
meta AS (
|
||||||
SELECT m.name FROM api.metadata m ),
|
SELECT m.name FROM api.metadata m ),
|
||||||
@@ -905,6 +952,9 @@ CREATE VIEW api.stats_logs_view AS -- todo
|
|||||||
lm.time AS last,
|
lm.time AS last,
|
||||||
l.*
|
l.*
|
||||||
FROM first_metric fm, last_metric lm, logbook l, meta m;
|
FROM first_metric fm, last_metric lm, logbook l, meta m;
|
||||||
|
COMMENT ON VIEW
|
||||||
|
api.stats_logs_view
|
||||||
|
IS 'Statistics Logs web view';
|
||||||
|
|
||||||
-- Home Ports / Unique Moorages
|
-- Home Ports / Unique Moorages
|
||||||
----> select count(*) as "Home Ports" from api.moorages m where home_flag is true;
|
----> select count(*) as "Home Ports" from api.moorages m where home_flag is true;
|
||||||
@@ -918,9 +968,40 @@ CREATE VIEW api.stats_logs_view AS -- todo
|
|||||||
----> select sum(m.stay_duration) as "Time Spent Away" from api.moorages m where home_flag is false;
|
----> select sum(m.stay_duration) as "Time Spent Away" from api.moorages m where home_flag is false;
|
||||||
-- Time Spent Away order by, group by stay_code (Dock, Anchor, Mooring Buoys, Unclassified)
|
-- Time Spent Away order by, group by stay_code (Dock, Anchor, Mooring Buoys, Unclassified)
|
||||||
----> select sa.description,sum(m.stay_duration) as "Time Spent Away" from api.moorages m, api.stays_at sa where home_flag is false AND m.stay_code = sa.stay_code group by m.stay_code,sa.description order by m.stay_code;
|
----> select sa.description,sum(m.stay_duration) as "Time Spent Away" from api.moorages m, api.stays_at sa where home_flag is false AND m.stay_code = sa.stay_code group by m.stay_code,sa.description order by m.stay_code;
|
||||||
CREATE VIEW api.stats_moorages_view AS -- todo
|
CREATE VIEW api.stats_moorages_view AS -- TODO
|
||||||
select *
|
WITH
|
||||||
from api.moorages;
|
home_ports AS (
|
||||||
|
select count(*) as home_ports from api.moorages m where home_flag is true
|
||||||
|
),
|
||||||
|
unique_moorage AS (
|
||||||
|
select count(*) as unique_moorage from api.moorages m
|
||||||
|
),
|
||||||
|
time_at_home_ports AS (
|
||||||
|
select sum(m.stay_duration) as time_at_home_ports from api.moorages m where home_flag is true
|
||||||
|
),
|
||||||
|
time_spent_away AS (
|
||||||
|
select sum(m.stay_duration) as time_spent_away from api.moorages m where home_flag is false
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
home_ports.home_ports as "Home Ports",
|
||||||
|
unique_moorage.unique_moorage as "Unique Moorages",
|
||||||
|
time_at_home_ports.time_at_home_ports "Time Spent at Home Port(s)",
|
||||||
|
time_spent_away.time_spent_away as "Time Spent Away"
|
||||||
|
FROM home_ports, unique_moorage, time_at_home_ports, time_spent_away;
|
||||||
|
COMMENT ON VIEW
|
||||||
|
api.stats_moorages_view
|
||||||
|
IS 'Statistics Moorages web view';
|
||||||
|
|
||||||
|
CREATE VIEW api.stats_moorages_away_view AS -- TODO
|
||||||
|
SELECT sa.description,sum(m.stay_duration) as time_spent_away_by
|
||||||
|
FROM api.moorages m, api.stays_at sa
|
||||||
|
WHERE home_flag IS false
|
||||||
|
AND m.stay_code = sa.stay_code
|
||||||
|
GROUP BY m.stay_code,sa.description
|
||||||
|
ORDER BY m.stay_code;
|
||||||
|
COMMENT ON VIEW
|
||||||
|
api.stats_moorages_away_view
|
||||||
|
IS 'Statistics Moorages Time Spent Away web view';
|
||||||
|
|
||||||
--CREATE VIEW api.stats_view AS -- todo
|
--CREATE VIEW api.stats_view AS -- todo
|
||||||
-- WITH
|
-- WITH
|
||||||
@@ -935,7 +1016,7 @@ CREATE VIEW api.stats_moorages_view AS -- todo
|
|||||||
|
|
||||||
-- global timelapse
|
-- global timelapse
|
||||||
-- TODO
|
-- TODO
|
||||||
CREATE VIEW timelapse AS -- todo
|
CREATE VIEW timelapse AS -- TODO
|
||||||
SELECT latitude, longitude from api.metrics;
|
SELECT latitude, longitude from api.metrics;
|
||||||
|
|
||||||
-- View main monitoring for grafana
|
-- View main monitoring for grafana
|
||||||
|
Reference in New Issue
Block a user