All informasjon om filmer produsert i 1988.
SELECT *
FROM Film
WHERE År = 1988
Tittel på amerikanske filmer produsert på 1980-tallet.
SELECT FNr, Tittel
FROM Film
WHERE Land = 'USA' AND År BETWEEN 1980 AND 1989
FNr er tatt med for å skille mellom filmer med samme tittel.
Komedier med aldersgrense under 10 år og spilletid under 130 minutter.
SELECT *
FROM Film
WHERE Sjanger = 'Komedie' AND Alder < 10 AND Tid < 130
Tittel på alle action- og western-filmer.
SELECT FNr, Tittel
FROM Film
WHERE Sjanger = 'Action' OR Sjanger = 'Western'
Alle produksjonsland, sortert og uten gjentakelser.
SELECT DISTINCT Land
FROM Film
ORDER BY Land
Korteste og lengste spilletid innen hver sjanger.
SELECT Sjanger, MIN(Tid) AS Korteste, MAX(Tid) AS Lengste
FROM Film
GROUP BY Sjanger
Antall filmer som ikke er til salgs.
SELECT COUNT(*) AS IkkeTilSalgs
FROM Film
WHERE Pris IS NULL
Antall filmer under 100 kr.
SELECT COUNT(Pris) AS Billigfilmer
FROM Film
WHERE Pris < 100
Filmer med tittel som slutter på 'now'.
SELECT *
FROM Film
WHERE UCASE(Tittel) LIKE '%NOW'
UCASE fungerer i MySQL, bruk UPPER i Oracle.
Gjennomsnittspris for sjangre med flere enn 2 filmer.
SELECT Sjanger, AVG(Pris) AS Snittpris
FROM Film
GROUP BY Sjanger
HAVING COUNT(*) > 2
Prisspennet innen hver sjanger.
SELECT Sjanger, MAX(Pris)-MIN(Pris) AS Prisspenn
FROM Film
GROUP BY Sjanger
Totalt antall filmer i tabellen og antall filmer til salgs, fordelt på produksjonsland.
SELECT Land, COUNT(*) AS TotaltAntall,
COUNT(Pris) AS AntallTilSalgs
FROM Film
GROUP BY Land
Antall år siden utgivelse for filmer eldre enn 50 år.
Løsning for MySQL:
SELECT FNr, YEAR(CURDATE())-År AS AntallÅr
FROM Film
WHERE YEAR(CURDATE())-År > 50;
Navn på datofunksjoner varierer fra system til system, se vedlegg A.
Nummer og beskrivelse for hytter med ukepris under kr 4 500 som har 4 eller flere sengeplasser.
SELECT Nr, Beskrivelse
FROM Hytte
WHERE Ukepris < 4500 AND AntallSenger >= 4
Hytter med strøm og dusj, sortert på stigende ukepris. Kolonnene Strøm og Dusj inneholder verdiene 'J' og 'N'.
SELECT Nr, Beskrivelse, AvstandAlpin, AntallSenger, Ukepris
FROM Hytte
WHERE Strøm = 'J' AND Dusj = 'J'
ORDER BY Ukepris
Antall hytter med 2 sengeplasser, 3 sengeplasser, og så videre.
SELECT AntallSenger, COUNT(*) AS AntallHytter
FROM Hytte
WHERE AntallSenger >= 2
GROUP BY AntallSenger
Gjennomsnittlig ukepris for hytter med 4 sengeplasser.
SELECT AVG(Ukepris) AS Snittpris
FROM Hytte
WHERE AntallSenger = 4
Antall hytter mindre enn 500 meter fra alpinbakken.
SELECT COUNT(*) AS AntallHytter
FROM Hytte
WHERE AvstandAlpin < 500
Finn skrivefeil i tabellen Vare (gal skrivemåte for gr og stk).
Gram skal forkortes g (uten punktum), så vi kan jo prøve å finne alle varer som inneholder "gr" i Betegnelse:
SELECT *
FROM Vare
WHERE Betegnelse LIKE '%gr%'
Vi får med litt for mange, f.eks. "Sølvgran" som inneholder "gr" i navnet uten at det har noe med vekt å gjøre.
Neste spørring gir færre irrelevante rader ved å utvide mønsteret med "0 ". Hvis vi forutsetter at det alltid kommer et tall som slutter på 0 foran "gr" blir dette en presis spørring, men vi får altså ikke med navn som inneholder f.eks. "35 gr".
SELECT *
FROM Vare
WHERE Betegnelse LIKE '%0 gr%'
For å få med alle tall som enten slutter på 0 eller 5:
SELECT *
FROM Vare
WHERE Betegnelse LIKE '%0 gr%' OR Betegnelse LIKE '%5 gr%'
Vi skulle også finne alle varenavn der "stk" kommer rett etter et tall. Det er mulig å bruke jokernotasjon som over. I MySQL kan vi også bruke såkalte regulære uttrykk med operatoren REGEXP.
SELECT *
FROM Vare
WHERE Betegnelse REGEXP '[0-9]stk'