Add prev exams and ov8
This commit is contained in:
90
prev_exams/ex18/oppg1.rel
Normal file
90
prev_exams/ex18/oppg1.rel
Normal file
@@ -0,0 +1,90 @@
|
||||
kunde (
|
||||
__kundenr__
|
||||
navn,
|
||||
adresse,
|
||||
telefon,
|
||||
epost
|
||||
)
|
||||
|
||||
dyreart (
|
||||
__art_id__,
|
||||
navn,
|
||||
)
|
||||
rase (
|
||||
__rase_id__,
|
||||
art_id*,
|
||||
navn,
|
||||
)
|
||||
|
||||
vaksine(
|
||||
__vaksine_id__,
|
||||
navn
|
||||
)
|
||||
|
||||
vaksine_krav (
|
||||
__vaksine_krav_id__,
|
||||
vaksine_id*,
|
||||
art_id*,
|
||||
rase_id*,
|
||||
alder,
|
||||
)
|
||||
|
||||
vaksine_utfort (
|
||||
__vaksine_utf_id__,
|
||||
vaksine_krav_id*,
|
||||
dyr_id*,
|
||||
dato,
|
||||
)
|
||||
|
||||
dyr (
|
||||
__dyr_id__,
|
||||
rase_id*
|
||||
eier_id*
|
||||
fode_aar,
|
||||
bur_alene,
|
||||
bur_husstand
|
||||
)
|
||||
|
||||
dyr_kunde_henting (
|
||||
__dyr_id__*
|
||||
__kundenr__*
|
||||
)
|
||||
|
||||
opphold (
|
||||
__dyr_id__,
|
||||
dato_fra,
|
||||
dato_til,
|
||||
)
|
||||
|
||||
bhageavtale (
|
||||
__bhageavtale_id__,
|
||||
dyr_id*,
|
||||
dato_fra,
|
||||
avtaletype, -- 0=fast med prosent, 1=klippekort (klipp=antall gjenværende), 2=dropin
|
||||
prosent,
|
||||
klipp,
|
||||
)
|
||||
bhageopphold (
|
||||
__bhageopphold_id__, -- Denne ID-en er nok til å fastslå klippekort/avtale-id
|
||||
bhageavtale_id*,
|
||||
dato,
|
||||
)
|
||||
|
||||
arrangement (
|
||||
__arrangement_id__,
|
||||
navn,
|
||||
beskrivelse,
|
||||
dato_fra,
|
||||
dato_til,
|
||||
tid_fra,
|
||||
tid_til,
|
||||
pris
|
||||
)
|
||||
|
||||
arrangement_paamelding (
|
||||
__paamelding_id__,
|
||||
arragenement_id*,
|
||||
dyr_id*,
|
||||
mottatt_diplom,
|
||||
)
|
||||
|
||||
44
prev_exams/ex18/oppg2.sql
Normal file
44
prev_exams/ex18/oppg2.sql
Normal file
@@ -0,0 +1,44 @@
|
||||
-- Oppgave 2 a (forslag 1)
|
||||
SELECT DISTINCT STED.stedsnavn FROM ETAPPE
|
||||
LEFT JOIN STED ON STED.sted_id = ETAPPE.til_stedid OR STED.sted_id = ETAPPE.fra_stedid
|
||||
LEFT JOIN LØP_ETAPPE ON LØP_ETAPPE.enr = ETAPPE.enr
|
||||
LEFT JOIN LØP ON LØP.lnr = LØP_ETAPPE.lnr
|
||||
WHERE LØP.lnr = 1 AND LØP.aar = 2018
|
||||
ORDER BY STED.stedsnavn;
|
||||
|
||||
-- Oppgave 2 a (forslag 2)
|
||||
SELECT DISTINCT S.stedsnavn
|
||||
FROM STED S, ETAPPE E, LØP_ETAPPE LE, LØP L
|
||||
WHERE S.sted_id = E.til_stedid OR S.sted_id = E.fra_stedid
|
||||
AND E.enr = LE.enr
|
||||
AND LE.lnr = L.lnr
|
||||
AND L.lnr = 1 AND LE.aar = 2018
|
||||
ORDER BY S.stedsnavn;
|
||||
|
||||
-- Oppgave 2 b
|
||||
SELECT e.distanse, s_f.stedsnavn AS fra, s_t.stedsnavn AS til FROM ETAPPE e
|
||||
LEFT JOIN STED s_t ON s_t.sted_id = e.til_stedid
|
||||
LEFT JOIN STED s_f ON s_f.sted_id = e.fra_stedid
|
||||
LEFT JOIN LØP_ETAPPE le ON le.enr = e.enr
|
||||
LEFT JOIN LØP l ON l.lnr = le.lnr
|
||||
WHERE l.lnr = 1 AND l.aar = 2018
|
||||
ORDER BY le.løpenr;
|
||||
|
||||
-- Oppgave 2 c
|
||||
SELECT DISTINCT d.deltnr, d.navn FROM DELTAKER d
|
||||
WHERE d.deltnr IN
|
||||
(SELECT d.deltnr, COUNT(*) AS antall FROM DELTAKER d
|
||||
LEFT JOIN TIDTAKING t ON t.deltnr = d.deltnr
|
||||
WHERE t.lnr = 1 AND t.aar = 2018 AND t.fullført = 1
|
||||
GROUP BY d.deltnr
|
||||
HAVING antall = 4);
|
||||
|
||||
-- Oppgave 2 d
|
||||
CREATE VIEW finnmark_deltaker AS
|
||||
SELECT d.deltnr, COUNT(e.enr) AS etapper, SUM(t.tid) AS tot_tid FROM DELTAKER d
|
||||
LEFT JOIN TIDTAKING t ON t.deltnr = d.deltnr
|
||||
LEFT JOIN LØP l ON l.lnr = t.lnr
|
||||
LEFT JOIN LØP_ETAPPE le ON le.lnr = l.lnr
|
||||
LEFT JOIN ETAPPE e ON e.enr = le.enr
|
||||
WHERE l.løpsnavn = "Finnmarksløpet" AND l.aar = 2018 AND t.fullført = 1
|
||||
GROUP BY d.delntr;
|
||||
Reference in New Issue
Block a user