Funktioner i SQL
Indhold på denne side
I dette afsnit om funktioner i SQL vil den samme tabel blive benyttet som eksempel under alle punkterne. Tabellen hedder “Spil” og har kolonnerne “ID”, “Navn”, “Genre”, “Salg” og “Pris”. Tabellen kan ses her:
ID | Navn | Genre | Salg | Pris |
---|---|---|---|---|
1 | The Last of Us | Action-adventure | 84 | 300,00 |
2 | Fifa 2020 | Sport | 75 | 399,99 |
3 | Dark Souls 3 | Role-playing game | 66 | 149,00 |
4 | Minecraft | Sandbox | 108 | 99,00 |
5 | Overwatch | First-person shooter | 99 | 199,99 |
6 | Red Dead Redemption 2 | Action-adventure | 121 | 400,00 |
7 | Sims 4 | Simulation | 62 | 75,00 |
8 | Fallout 4 | Role-playing game | 89 | 149,99 |
9 | Age of Empires | Real-time strategy | 43 | 99,00 |
10 | Need for Speed: Heat | Racing | 86 | 199,99 |
Find antal (COUNT)
For at finde antallet af rækker i en tabel kan man benytte følgende erklæring:
SELECT COUNT(kolonne_1, kolonne_2) FROM tabel
- “kolonne” er navnet på den eller de kolonner som skal indlæses
- “tabel” er navnet på den tabel som dataen skal indlæses fra
Læg mærke til at erklæringen kun tæller rækker med som indeholder dataværdier. Det vil sige, at hvis nogle rækker står tomme, så vil de ikke blive talt med.
Hvis man gerne vil tælle antallet af alle rækker, som skal opfylde en bestemt kriterie, så kan man tilføje en WHERE-erklæring:
SELECT COUNT(kolonne) FROM tabel WHERE betingelse;
“betingelse” er den kriterie som bestemmer hvilke rækker som programmet skal tælle med. Det kunne f.eks. være at vi vil finde alle spil, hvor genren er Role-playing game i tabellen “Spil”. Det kan gøres således:
SELECT COUNT(*) FROM Spil WHERE Genre = 'Role-playing game';
Det vil resultere i følgende tabel som fortæller os at der er to spil som har Role-playing game som genre:
COUNT(*) |
---|
2 |
Find sum (SUM)
For at finde summen af talværdier i en eller flere kolonner i en tabel kan man benytte følgende erklæring:
SELECT SUM(kolonne_1, kolonne_2) FROM tabel
- “kolonne” er navnet på den eller de kolonner der indeholder talværdier som man gerne vil have at programmet finder summen af
- “tabel” er navnet på den tabel som dataen skal indlæses fra
Hvis man gerne vil finde summen af nogle rækker i en eller flere kolonner, som skal opfylde en bestemt kriterie, så kan man tilføje en WHERE-erklæring:
SELECT SUM(kolonne_1, kolonne_2) FROM tabel WHERE betingelse;
Betingelsen skaber et kriterie for hvilke talværdier som skal tælles med i summen.
Lad os sige at man gerne vil finde den samlede værdi for antallet af salg i tabellen “Spil”. Det kan lade sig gøre med følgende kodestykke:
SELECT SUM(Salg) FROM Spil;
Det vil resultere i følgende tabel som fortæller os at der er blevet solgt 833 spil i alt:
SUM(*) |
---|
833 |
Find gennemsnit (AVG)
For at finde gennemsnittet af talværdier i en eller flere kolonner i en tabel kan man benytte følgende erklæring:
SELECT AVG(kolonne_1, kolonne_2) FROM tabel;
- “kolonne” er navnet på den eller de kolonner der indeholder talværdier som man gerne vil have at programmet finder gennemsnittet af
- “tabel” er navnet på den tabel som dataen skal indlæses fra
Hvis man gerne vil finde gennemsnittet af nogle rækker i en eller flere kolonner, som skal opfylde en bestemt kriterie, så kan man tilføje en WHERE-erklæring:
SELECT AVG(kolonne_1, kolonne_2) FROM tabel WHERE betingelse;
Betingelsen skaber et kriterie for hvilke talværdier der skal tælles med i gennemsnittet.
Lad os sige at man gerne vil finde det gennemsnitlige antal salg for et spil i tabellen “Spil”. Det kan lade sig gøre med følgende kodestykke:
SELECT AVG(Salg) FROM Spil
Det vil resultere i følgende tabel, som fortæller os at det gennemsnitlige antal salg er 83,3 spil:
AVG(Spil) |
---|
83,3 |
Find maximum og minimum (MAX/MIN)
For at finde maximum- eller minimumværdien af talværdier i en eller flere kolonner i en tabel kan man benytte følgende erklæring:
SELECT MAX/MIN(kolonne_1, kolonne_2) FROM tabel;
- “kolonne” er navnet på den eller de kolonner der indeholder talværdier som man gerne vil have at programmet finder maksimum- eller minimumværdien af
- “tabel” er navnet på den tabel som dataen skal indlæses fra
- “MAX/MIN” afgør om det skal være maksimumværdien (MAX) eller minimumværdien (MIN) som programmet skal indlæse
Hvis man gerne vil finde maksimum- eller minimumværdien af nogle rækker i en eller flere kolonner, som skal opfylde en bestemt kriterie, så kan man tilføje en WHERE-erklæring:
SELECT MAX/MIN(kolonne_1, kolonne_2) FROM tabel WHERE betingelse;
Betingelsen skaber et kriterie for hvilke talværdier som programmet skal finde maksimum eller minimumværdien af.
Lad os sige at man gerne vil finde det spil som koster flest penge i tabellen “Spil”. Så kan man benytte følgende kodestykke:
SELECT MAX(Pris) FROM Spil;
Det vil resultere i følgende tabel, som fortæller os at prisen på det spil som koster mest er 400 kr.:
MAX(Pris) |
---|
400 |
Afrund data (ROUND)
For at afrunde en talværdi kan man benytte følgende erklæring:
SELECT ROUND(kolonne, decimal_antal) FROM tabel;
- “kolonne” er navnet på den eller de kolonner der indeholder talværdier som man gerne vil have at programmet skal afrunde
- “decimal_antal” skal være et nummer som indikerer antallet af decimaltal der skal afrundes til
- “tabel” er navnet på den tabel som dataen skal indlæses fra
Hvis man gerne vil runde værdier op i en eller flere kolonner, som opfylder et bestemt kriterie, så kan man tilføje en WHERE-erklæring:
SELECT ROUND(kolonne, decimal_antal) FROM tabel WHERE betingelse;
Betingelsen skaber et kriterie for hvilke talværdier som programmet skal afrunde.
Lad os sige at man gerne vil oprunde resultatet af den gennemsnitlige pris for et spil i tabellen “Spil” til to decimaltal. Det kan gøres således:
SELECT ROUND(AVG(Pris), 0) FROM Spil;
Det vil resultere i følgende tabel, som fortæller os at den gennemsnitlige pris oprundet til to decimaltal er 207,20 kr.:
ROUND(AVG(Pris), 2) |
---|
207,20 |
Arranger identisk data i grupper (GROUP BY)
Hvis man gerne vil benytte funktioner i SQL samtidig med at man arrangerer funktionens resultater i grupper, så kan man benytte følgende erklæring:
SELECT kolonne_1, FUNKTION(kolonne_2) FROM tabel GROUP BY kolonne_3;
- “kolonne_1” er navnet på den første kolonne som skal indlæses
- “FUNKTION” er den funktion som skal benyttes. Det kunne f.eks. være COUNT, SUM eller AVG
- “kolonne_2” er navnet på den anden kolonne som skal indlæses med de talværdier som er et resultat af en funktion
- “kolonne_3” er den kolonne som talværdierne skal grupperes efter
- “tabel” er navnet på den tabel som dataen skal indlæses fra
Lad os sige at man gerne vil finde antallet af spil i hver genre i tabellen “Spil”. Det kan gøres således:
SELECT Genre, COUNT(Navn)
FROM Spil
GROUP BY Genre;
Det vil resultere i følgende tabel, som fortæller antallet af spil i hver genre:
Genre | COUNT(Navn) |
---|---|
Action-adventure | 2 |
First-person shooter | 1 |
Racing | 1 |
Real-time strategy | 1 |
Role-playing game | 2 |
Sandbox | 1 |
Simulation | 1 |
Sport | 1 |