Problem:
Chcesz zaokrąglić liczbę w dół do najbliższej liczby całkowitej.
Przykład:
W naszej bazie danych znajduje się tabela o nazwie pracownik z danymi w kolumnach:id
, first_name
, last_name
i hours_worked
(na bieżący miesiąc).
id | imię | nazwisko | hours_worked |
---|---|---|---|
1 | Alan | Watson | 95 |
2 | Lisa | Czarny | 225 |
3 | Laura | Williams | 104 |
Pokażmy imię i nazwisko każdego pracownika wraz z liczbą przepracowanych dni. Ponieważ tabela pokazuje tylko liczbę przepracowanych godzin, a nie dni, musimy sami obliczyć tę wartość.
W przypadku tego problemu założymy, że każdy pracownik ma standardowy ośmiogodzinny dzień pracy bez żadnych nieprawidłowości. Dlatego liczba przepracowanych dni to liczba godzin podzielona przez osiem.
Rozwiązanie:
SELECT last_name, first_name, FLOOR(hours_worked/8) AS days_worked FROM employee;
Zapytanie zwraca imię i nazwisko każdego pracownika oraz liczbę dni przepracowanych w tym miesiącu.
nazwisko | imię | dni_przepracowane |
---|---|---|
Watson | Alan | 11 |
Czarny | Lisa | 28 |
Williams | Laura | 13 |
Dyskusja:
Podłogi to prosta operacja matematyczna, która bierze liczbę i zaokrągla ją w dół do najbliższej liczby całkowitej. Na przykład sama podłoga 5 to 5, podczas gdy podłoga 5.1 to również 5. Jako inny przykład, podłoga 4.9 to 4.
W SQL używamy funkcji FLOOR. Zaokrągla liczbę i zwraca najbliższą liczbę całkowitą, która jest jej mniejsza lub równa. W naszym przykładzie liczba przepracowanych dni musi być liczbą całkowitą, a nie liczbą zmiennoprzecinkową. Dlatego użyliśmy (FLOOR(hours_worked/8)
).