
Jeśli kiedykolwiek pracowałem z liczbami w SQL, na pewno zetknąłem się z potrzebą ich zaokrąglania. Jedną z najlepszych funkcji, jakie oferuje SQL do zaokrąglania w dół, jest FLOOR()
. Dziś przyjrzymy się temu, jak działa ta funkcja, dlaczego warto jej używać oraz jakie są jej praktyczne zastosowania.
Co to jest funkcja FLOOR w SQL?
Funkcja FLOOR()
w SQL to wbudowana funkcja matematyczna, która zaokrągla liczbę w dół do najbliższej wartości całkowitej. Działa na liczbach zmiennoprzecinkowych i zwraca wartość całkowitą mniejszą lub równą podanej liczbie.
Składnia funkcji FLOOR()
Składnia funkcji FLOOR()
jest bardzo prosta:
FLOOR(liczba)
Gdzie:
liczba
– dowolna wartość numeryczna (może być liczbą zmiennoprzecinkową lub całkowitą).
Jak działa funkcja FLOOR? Przykłady
Najprościej zrozumieć działanie funkcji FLOOR()
poprzez przykłady. Spójrzmy na kilka scenariuszy.
Przykład 1: Podstawowe działanie FLOOR
SELECT FLOOR(12.7) AS wynik;
Wynik:
wynik |
---|
12 |
Jak widać, mimo że liczba 12.7
jest bliższa 13
, funkcja FLOOR()
zawsze zaokrągla w dół.
Przykład 2: FLOOR dla liczby ujemnej
SELECT FLOOR(-5.3) AS wynik;
Wynik:
wynik |
---|
-6 |
W przypadku liczb ujemnych FLOOR()
również zaokrągla w dół, czyli w kierunku bardziej ujemnym.
Przykład 3: FLOOR dla liczby całkowitej
SELECT FLOOR(10) AS wynik;
Wynik:
wynik |
---|
10 |
Jeśli podam już liczbę całkowitą, funkcja FLOOR()
nie zmienia jej wartości.
Praktyczne zastosowania funkcji FLOOR w SQL
1. Grupowanie danych w przedziały
Często używam FLOOR()
, gdy chcę podzielić wartości na przedziały. Na przykład, jeśli mam ceny produktów i chcę je grupować w przedziały co 10 zł:
SELECT FLOOR(price / 10) * 10 AS przedzial_cenowy, COUNT(*) AS liczba_produktow
FROM products
GROUP BY FLOOR(price / 10) * 10;
To pozwala stworzyć grupy cenowe np. 0-9, 10-19, 20-29 itd.
2. Generowanie indeksów do paginacji
Podczas stronicowania wyników w tabelach SQL czasem muszę określić numer strony, na której znajduje się dany rekord. Tu właśnie przydaje się FLOOR()
:
SELECT id, name, FLOOR((ROW_NUMBER() OVER(ORDER BY id) - 1) / 10) + 1 AS numer_strony
FROM users;
Dzięki temu mogę przypisać każdemu rekordowi odpowiedni numer strony.
3. Obliczanie godzin zamiast minut
Jeśli mam zapisane wartości czasu w minutach i chcę otrzymać liczbę pełnych godzin, mogę wykorzystać funkcję FLOOR()
:
SELECT FLOOR(minutes / 60) AS godziny FROM czas_pracy;
To pozwala mi na szybkie obliczenie ilości przepracowanych godzin.
Różnice między FLOOR a CEIL oraz ROUND
Istnieją również inne funkcje zaokrąglające w SQL, które warto znać:
CEIL()
– zaokrągla w górę, czyli zawsze do najbliższej większej wartości całkowitej.ROUND()
– zaokrągla według standardowych zasad matematycznych (do najbliższej liczby całkowitej).
Przykład porównawczy:
SELECT FLOOR(4.8), CEIL(4.8), ROUND(4.8);
Wynik:
FLOOR(4.8) | CEIL(4.8) | ROUND(4.8) |
---|---|---|
4 | 5 | 5 |
Podsumowanie
Funkcja FLOOR()
w SQL to potężne narzędzie do zaokrąglania liczb w dół, które znajduje szerokie zastosowanie w analizie danych, paginacji wyników, a nawet w obliczeniach pracy z czasem. Mam nadzieję, że teraz działanie tej funkcji jest dla mnie jasne i będę mógł ją efektywnie wykorzystywać w swoich zapytaniach SQL.
Inny ciekawy artykuł:
Jak działa CEIL w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.