07. december 2009 - 14:59
#1
CREATE TABLE IF NOT EXISTS resultat (
navn VARCHAR(50),
klub VARCHAR(50),
afd1 INTEGER,
afd2 INTEGER,
afd3 INTEGER,
afd4 INTEGER,
afd5 INTEGER,
afd6 INTEGEr,
PRIMARY KEY(navn,klub)
);
CREATE OR REPLACE VIEW afd AS
SELECT navn, klub, afd1 as afd, 1 as val FROM resultat
UNION
SELECT navn, klub, afd2 as afd, 2 as val FROM resultat
UNION
SELECT navn, klub, afd3 as afd, 3 as val FROM resultat
UNION
SELECT navn, klub, afd4 as afd, 4 as val FROM resultat
UNION
SELECT navn, klub, afd5 as afd, 5 as val FROM resultat
UNION
SELECT navn, klub, afd6 as afd, 6 as val FROM resultat;
CREATE OR REPLACE VIEW minafd AS
SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, afd.val AS val
FROM afd
WHERE (afd.navn, afd.klub, afd.afd) IN (
SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
FROM afd a
GROUP BY a.navn, a.klub)
;
CREATE OR REPLACE VIEW minafd1 AS
SELECT a.navn AS navn, a.klub AS klub, a.val AS val, a.afd AS afd
FROM afd a, minafd m
WHERE m.navn = a.navn
AND m.klub= a.klub
AND m.val != a.val
;
CREATE OR REPLACE VIEW minafd2 AS
SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, afd.val AS val
FROM afd
WHERE (afd.navn, afd.klub, afd.afd) IN (
SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
FROM minafd1 a
GROUP BY a.navn, a.klub)
;
CREATE OR REPLACE VIEW minafd3 AS
SELECT a.navn AS navn, a.klub AS klub, a.val AS val, a.afd AS afd
FROM afd a, minafd m, minafd2 m3
WHERE (m.navn = a.navn
AND m.klub= a.klub
AND m.val != a.val)
and
(m3.navn = a.navn
AND m3.klub= a.klub
AND m3.val != a.val)
;
CREATE OR REPLACE VIEW sumafd AS
SELECT klub, navn, SUM(afd) AS sum4afd
FROM minafd3
GROUP BY klub,navn;
SELECT
a.Navn, "-",
a.Klub, "-",
a.Afd1, "-",
a.Afd2, "-",
a.Afd3, "-",
a.Afd4, "-",
a.Afd5, "-",
a.Afd6, "-",
a.Afd1 + a.Afd2 + a.Afd3 + a.Afd4 + a.Afd5 + a.Afd6 AS X,
b.sum4afd AS Y
FROM resultat a, sumafd b
WHERE a.navn = b.navn
AND a.klub = b.klub
;
08. december 2009 - 10:38
#2
View minafd og minafd2 skal ændres til
CREATE OR REPLACE VIEW minafd AS
SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, max(afd.val) AS val
FROM afd
WHERE (afd.navn, afd.klub, afd.afd) IN (
SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
FROM afd a
GROUP BY a.navn, a.klub)
GROUP BY navn, klub, afd
;
CREATE OR REPLACE VIEW minafd2 AS
SELECT afd.navn AS navn, afd.klub AS klub,afd.afd AS afd, MIN(afd.val) AS val
FROM afd
WHERE (afd.navn, afd.klub, afd.afd) IN (
SELECT a.navn AS navn, a.klub AS klub, Min(a.afd) AS afd
FROM minafd1 a
GROUP BY a.navn, a.klub)
GROUP BY navn, klub, afd
;