Problem:
Du vill avrunda ett tal nedåt till närmaste heltal.
Exempel:
Vår databas har en tabell som heter anställd med data i följande kolumner:id
, first_name
, last_name
och hours_worked
(för innevarande månad).
id | förnamn | efternamn | arbetade timmar |
---|---|---|---|
1 | Alan | Watson | 95 |
2 | Lisa | Svart | 225 |
3 | Laura | Williams | 104 |
Låt oss visa för- och efternamnet på varje anställd tillsammans med antalet dagar de arbetat. Eftersom tabellen bara visar antalet arbetade timmar och inte dagar, måste vi själva beräkna detta värde.
För detta problem antar vi att varje anställd har en standard åtta timmars arbetsdag utan oegentligheter. Därför är antalet arbetade dagar antalet timmar dividerat med åtta.
Lösning:
SELECT last_name, first_name, FLOOR(hours_worked/8) AS days_worked FROM employee;
Frågan returnerar för- och efternamnet på varje anställd och antalet dagar de arbetat denna månad.
efternamn | förnamn | arbetade dagar |
---|---|---|
Watson | Alan | 11 |
Svart | Lisa | 28 |
Williams | Laura | 13 |
Diskussion:
Golv är en enkel matematisk operation som tar ett tal och avrundar det nedåt till närmaste heltal. Till exempel är golvet på 5 5 i sig, medan golvet på 5,1 också är 5. Som ett annat exempel är golvet på 4,9 4.
I SQL använder vi FLOOR-funktionen. Det tar talet för att avrunda och returnerar närmaste heltal som är mindre än eller lika med det. I vårt exempel måste antalet arbetade dagar vara ett heltal, inte ett flyttal. Därför använde vi (FLOOR(hours_worked/8)
).