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) ).