Files
elwig/Elwig/Resources/Sql/12-13.sql

32 lines
1.3 KiB
SQL

-- schema version 11 to 12
ALTER TABLE season ADD COLUMN bs_value INTEGER;
CREATE TABLE member_history (
mgnr INTEGER NOT NULL,
date TEXT NOT NULL CHECK (date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
business_shares INTEGER NOT NULL,
type TEXT NOT NULL CHECK (type REGEXP '^[a-z_]+$'),
comment TEXT DEFAULT NULL,
CONSTRAINT pk_member_history PRIMARY KEY (mgnr, date),
CONSTRAINT fk_member_history_member FOREIGN KEY (mgnr) REFERENCES member (mgnr)
ON UPDATE CASCADE
ON DELETE CASCADE
) STRICT;
CREATE VIEW v_total_under_delivery AS
SELECT s.year, m.mgnr, m.business_shares,
m.business_shares * s.min_kg_per_bs AS min_kg,
m.business_shares * s.max_kg_per_bs AS max_kg,
COALESCE(d.sum, 0) AS weight,
IIF(COALESCE(d.sum, 0) < m.business_shares * s.min_kg_per_bs,
COALESCE(d.sum, 0) - m.business_shares * s.min_kg_per_bs,
IIF(COALESCE(d.sum, 0) > m.business_shares * s.max_kg_per_bs,
COALESCE(d.sum, 0) - m.business_shares * s.max_kg_per_bs,
0)) AS diff
FROM member m, season s
LEFT JOIN v_stat_member d ON (d.year, d.mgnr) = (s.year, m.mgnr)
ORDER BY s.year, m.mgnr;