SELECT 2:

I den første artikkelen om SELECT såg vi på utvalg frå ein enkelt tabell, ved å filtrera data, men uten å behandla dei vidare. No skal vi sjå på SELECT-variantar som presenterer data på ein annan måte enn slik dei er i tabellen.

1 Endra navn på kolonner

Den første måten endrar egentlig ikkje på sjølve data, bare overskriften. Noken gonger er kolonnenavna lite informative, og då kan vi andre dei vha AS-kommandoen:


    SELECT <kolonne> AS <kolonnenavn> 
    

Her er <kolonne> det navnet som står i tabellen eller eit aggregat av ei kolonne (sjå under), og <kolonnenavn> det du vil erstatta det med i overskriften.

2 Sortering

Hvis vi vil ha ut radene i ein annan rekkefølge enn den som er i tabellen, kan vi bruka kommandoen


    ORDER BY <kolonne>
    

Default er å sortera i stigande rekkefølge, men vi kan også skriva ASC. Hvis vi vil ha minkande rekkefølge vi bruka DESC. Vi kan også sortera på fleire felt. Dessuten kan vi sjølsagt kombinera sortering med filtrering.

3 Aggrerte data

Ofte vil vi ikkje ha ut alle radene, men heller summar, eller liknande. Då kan vi bruka:


    COUNT, SUM, AVG, MAX og MIN
	

4 Gruppering

Når vi bruker aggregerte data som feks, SUM, så vil vi kanskje ikkje ha ut totalsummen, men heller summar innan grupper. Då kan vi bruka:


    GROUP BY <kolonne>
	

EKSEMPEL

Vi skal sjå på tre eksempel som er basert på tabellen "hundremeter" som inneheld navn, nasjon og personlige rekordane til dei 20 raskaste løparane i historien (per 2. desember 2017):

100m persar

Eksempel 1

Først vil vi finna alle dei nasjonale rekordane, og sortera etter beste nasjon. Dette gjer vi ved å finna den minste tida og gruppera etter nasjon. Vi vil sjølsagt også ha ut navnet på nasjonen :


    SELECT Nasjon, MIN(Tid) FROM hundremeter
    GROUP BY Nasjon
    ORDER BY Tid;
    
Nasjonsrekordar 100m

Her kunne vi med fordel kalt den siste kolonnen "rekord" i staden for MIN(Tid). Dette vil vi gjera i dei to neste eksempela.

Eksempel 2

No vil vi finna gjennomsnittstida for kvar nasjon, og sortera etter beste gjennomsnittstid.


    SELECT Nasjon, AVG(Tid) AS Gjennomsnittstid FROM hundremeter
    GROUP BY Nasjon
    ORDER BY Tid;
    
Gjenommsnitt 100m

Her har vi altså erstatta overskriften AVG(Tid) med "Gjennomsnittstid". Vi kunne sikkert også fjerna ein del desimaler i svaret.

Eksempel 3

Til slutt vil vi finna kor mange løparar frå kvar nasjon som har sprunge under 9.85


    SELECT Nasjon, COUNT(Tid) AS "Antal under 9.85" FROM hundremeter
    WHERE Tid < 9.85
    GROUP BY Nasjon
    ORDER BY Tid;
    
Antal løparar under 9.85