Problem:
Du vil runde et tal ned til det nærmeste heltal.
Eksempel:
Vores database har en tabel ved navn medarbejder med data i følgende kolonner:id
, first_name
, last_name
, og hours_worked
(for den aktuelle måned).
id | fornavn | efternavn | arbejdede timer |
---|---|---|---|
1 | Alan | Watson | 95 |
2 | Lisa | Sort | 225 |
3 | Laura | Williams | 104 |
Lad os vise for- og efternavnet på hver medarbejder sammen med antallet af dage, de arbejdede. Da tabellen kun viser antallet af arbejdstimer og ikke dagene, skal vi selv beregne denne værdi.
For dette problem antager vi, at hver medarbejder har en standard otte-timers arbejdsdag uden uregelmæssigheder. Derfor er antallet af arbejdsdage antallet af timer divideret med otte.
Løsning:
SELECT last_name, first_name, FLOOR(hours_worked/8) AS days_worked FROM employee;
Forespørgslen returnerer for- og efternavnet på hver medarbejder og det antal dage, de har arbejdet i denne måned.
efternavn | fornavn | dage_arbejdet |
---|---|---|
Watson | Alan | 11 |
Sort | Lisa | 28 |
Williams | Laura | 13 |
Diskussion:
Gulvbelægning er en simpel matematisk operation, der tager et tal og runder det ned til nærmeste heltal. For eksempel er gulvet i 5 selve 5, mens gulvet i 5,1 også er 5. Som et andet eksempel er gulvet på 4,9 4.
I SQL bruger vi FLOOR-funktionen. Det tager tallet for at afrunde og returnerer det nærmeste heltal, der er mindre end eller lig med det. I vores eksempel skal antallet af arbejdsdage være et heltal, ikke et flydende kommatal. Derfor brugte vi (FLOOR(hours_worked/8)
).