Add prev exams and ov8

This commit is contained in:
2023-01-20 22:11:15 +01:00
parent bb35fdcdd7
commit 17d7ee1aed
8 changed files with 339 additions and 0 deletions

90
prev_exams/ex18/oppg1.rel Normal file
View 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
View 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;