1
WITH qpartei(wahl, partei) AS (
2
SELECT DISTINCT m.wahl,
3
m.partei
4
FROM mandat m
5
), nicht_qpartei(wahl, partei) AS (
6
SELECT btw.nummer,
7
p.parteiid
8
FROM bundestagswahl btw,
9
partei p
10
EXCEPT
11
SELECT qpartei.wahl,
12
qpartei.partei
13
FROM qpartei
14
), erststimmen_partei_wahlkreis(wahlkreis, partei, abs_stimmen) AS (
15
SELECT wk.wkid,
16
dk.partei,
17
dk.anzahlstimmen
18
FROM wahlkreis wk,
19
direktkandidatur dk
20
WHERE (wk.wkid = dk.wahlkreis)
21
), zweitstimmen_partei_wahlkreis(wahlkreis, partei, abs_stimmen) AS (
22
SELECT wk.wkid,
23
ll.partei,
24
ze.anzahlstimmen
25
FROM wahlkreis wk,
26
landesliste ll,
27
zweitstimmenergebnis ze
28
WHERE ((wk.wkid = ze.wahlkreis) AND (ze.liste = ll.listenid))
29
), erststimmen_wahlkreis(wahlkreis, abs_stimmen) AS (
30
SELECT epw.wahlkreis,
31
sum(epw.abs_stimmen) AS sum
32
FROM erststimmen_partei_wahlkreis epw
33
GROUP BY epw.wahlkreis
34
), zweitstimmen_wahlkreis(wahlkreis, abs_stimmen) AS (
35
SELECT zpw.wahlkreis,
36
sum(zpw.abs_stimmen) AS sum
37
FROM zweitstimmen_partei_wahlkreis zpw
38
GROUP BY zpw.wahlkreis
39
)
40
SELECT 1 AS stimmentyp,
41
wk.wahl,
42
wk.nummer AS wk_nummer,
43
p.kuerzel AS partei,
44
p.farbe AS partei_farbe,
45
epw.abs_stimmen,
46
((epw.abs_stimmen)::numeric / (ewk.abs_stimmen)::numeric) AS rel_stimmen
47
FROM erststimmen_partei_wahlkreis epw,
48
partei p,
49
qpartei qp,
50
wahlkreis wk,
51
erststimmen_wahlkreis ewk
52
WHERE ((epw.partei = p.parteiid) AND (p.parteiid = qp.partei) AND (wk.wahl = qp.wahl) AND (epw.wahlkreis = wk.wkid) AND (epw.wahlkreis = ewk.wahlkreis))
53
UNION
54
SELECT 1 AS stimmentyp,
55
wk.wahl,
56
wk.nummer AS wk_nummer,
57
'Sonstige'::character varying AS partei,
58
'DDDDDD'::character varying AS partei_farbe,
59
sum(epw.abs_stimmen) AS abs_stimmen,
60
((sum(epw.abs_stimmen))::numeric / (ewk.abs_stimmen)::numeric) AS rel_stimmen
61
FROM erststimmen_partei_wahlkreis epw,
62
wahlkreis wk,
63
nicht_qpartei nqp,
64
erststimmen_wahlkreis ewk
65
WHERE ((wk.wahl = nqp.wahl) AND (epw.wahlkreis = wk.wkid) AND (epw.partei = nqp.partei) AND (epw.wahlkreis = ewk.wahlkreis))
66
GROUP BY wk.wahl, wk.nummer, ewk.abs_stimmen
67
UNION
68
SELECT 2 AS stimmentyp,
69
wk.wahl,
70
wk.nummer AS wk_nummer,
71
p.kuerzel AS partei,
72
p.farbe AS partei_farbe,
73
zpw.abs_stimmen,
74
((zpw.abs_stimmen)::numeric / (zwk.abs_stimmen)::numeric) AS rel_stimmen
75
FROM zweitstimmen_partei_wahlkreis zpw,
76
partei p,
77
qpartei qp,
78
wahlkreis wk,
79
zweitstimmen_wahlkreis zwk
80
WHERE ((zpw.partei = p.parteiid) AND (p.parteiid = qp.partei) AND (wk.wahl = qp.wahl) AND (zpw.wahlkreis = wk.wkid) AND (zpw.wahlkreis = zwk.wahlkreis))
81
UNION
82
SELECT 2 AS stimmentyp,
83
wk.wahl,
84
wk.nummer AS wk_nummer,
85
'Sonstige'::character varying AS partei,
86
'DDDDDD'::character varying AS partei_farbe,
87
sum(zpw.abs_stimmen) AS abs_stimmen,
88
((sum(zpw.abs_stimmen))::numeric / (zwk.abs_stimmen)::numeric) AS rel_stimmen
89
FROM zweitstimmen_partei_wahlkreis zpw,
90
wahlkreis wk,
91
nicht_qpartei nqp,
92
zweitstimmen_wahlkreis zwk
93
WHERE ((wk.wahl = nqp.wahl) AND (zpw.wahlkreis = wk.wkid) AND (zpw.partei = nqp.partei) AND (zpw.wahlkreis = zwk.wahlkreis))
94
GROUP BY wk.wahl, wk.nummer, zwk.abs_stimmen;