32 lines
1.3 KiB
SQL
32 lines
1.3 KiB
SQL
-- schema version 12 to 13
|
|
|
|
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;
|