Zaokrąglanie i obcinanie
ROUND, CEIL, FLOOR i TRUNC
Zaokrąglanie i obcinanie to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Dlaczego zaokrąglanie ma znaczenie
Podczas pracy z liczbami w SQL często otrzymuje się wyniki z wieloma miejscami po przecinku. Na przykład dzielenie 10 przez 3 daje 3.3333333...
SQL udostępnia wbudowane funkcje pozwalające kontrolować liczbę wyświetlanych lub przechowywanych miejsc po przecinku: ROUND, CEIL, FLOOR i TRUNC. Są one niezbędne do prezentowania przejrzystych danych finansowych, pomiarów i statystyk.
SELECT 10.0 / 3.0 AS raw_result;ROUND: podstawowe użycie
Funkcja ROUND() zaokrągla liczbę do określonej liczby miejsc po przecinku. Stosuje standardowe zasady zaokrąglania: cyfry 5 i większe zaokrąglają w górę, a cyfry mniejsze niż 5 — w dół.
Składnia wygląda następująco: ROUND(number, decimal_places). Jeśli pominą Państwo drugi argument, liczba zostanie zaokrąglona do najbliższej liczby całkowitej.
SELECT
ROUND(3.14159, 2) AS two_decimals,
ROUND(3.14159, 0) AS zero_decimals,
ROUND(3.14159) AS no_arg;ROUND z ujemną liczbą miejsc
Mało znaną funkcją ROUND() jest możliwość przekazania ujemnej liczby jako drugiego argumentu. W takim przypadku zaokrąglanie odbywa się po lewej stronie przecinka — przydaje się to do zaokrąglania do najbliższych dziesiątek, setek lub tysięcy.
Na przykład ROUND(1567, -2) zaokrągla do najbliższej setki i zwraca 1600.
SELECT
ROUND(1567.89, -1) AS nearest_ten,
ROUND(1567.89, -2) AS nearest_hundred,
ROUND(1567.89, -3) AS nearest_thousand;CEIL: zawsze w górę
CEIL() (w niektórych bazach danych zapisywana również jako CEILING()) zawsze zaokrągla liczbę w górę do najbliższej liczby całkowitej, niezależnie od części dziesiętnej.
Jest to przydatne, gdy trzeba mieć pewność, że nie zejdzie się poniżej minimum — na przykład podczas obliczania liczby stron potrzebnych do wyświetlenia zestawu wyników.
SELECT
CEIL(4.1) AS ceil_4_1,
CEIL(4.9) AS ceil_4_9,
CEIL(-4.1) AS ceil_neg_4_1,
CEIL(-4.9) AS ceil_neg_4_9;FLOOR: zawsze w dół
FLOOR() zawsze zaokrągla liczbę w dół do najbliższej liczby całkowitej, niezależnie od części dziesiętnej.
Warto zauważyć, że w przypadku liczb ujemnych FLOOR zaokrągla od zera — FLOOR(-4.1) daje -5, a nie -4. Jest to odwrotne zachowanie od tego, którego niektórzy początkujący się spodziewają.
SELECT
FLOOR(4.9) AS floor_4_9,
FLOOR(4.1) AS floor_4_1,
FLOOR(-4.1) AS floor_neg_4_1,
FLOOR(-4.9) AS floor_neg_4_9;CEIL i FLOOR — porównanie
Jednoczesne zestawienie CEIL i FLOOR ułatwia zrozumienie różnicy. CEIL zawsze przechodzi w górę do następnej liczby całkowitej, a FLOOR zawsze w dół.
Można wyobrazić to sobie jak budynek: FLOOR to poziom podłogi, na który się Państwo opuszczają, a CEIL to sufit, ku któremu się Państwo wznoszą.
SELECT
2.3 AS original,
CEIL(2.3) AS ceil_result,
FLOOR(2.3) AS floor_result
UNION ALL
SELECT
7.8,
CEIL(7.8),
FLOOR(7.8);TRUNC: obcinanie bez zaokrąglania
TRUNC() (w MySQL TRUNCATE()) usuwa cyfry dziesiętne bez zaokrąglania. Po prostu obcina cyfry znajdujące się za określoną pozycją.
Różni się to od ROUND — TRUNC(4.9) daje 4, a nie 5. Część dziesiętna zostaje po prostu odrzucona.
SELECT
TRUNC(4.9) AS trunc_4_9,
TRUNC(4.1) AS trunc_4_1,
TRUNC(-4.9) AS trunc_neg_4_9,
TRUNC(3.14159, 3) AS trunc_3_decimals;ROUND i TRUNC — porównanie
Najważniejsza różnica między ROUND a TRUNC polega na tym, że ROUND zmienia wartość na podstawie kolejnej cyfry, natomiast TRUNC zawsze odrzuca wszystko za miejscem obcięcia, bez żadnej korekty.
Należy używać ROUND, gdy potrzebna jest wartość najbliższa matematycznie. TRUNC sprawdza się wtedy, gdy trzeba bezwzględnie usunąć część precyzji bez zaokrąglania w górę — jest to częste w obliczeniach finansowych, w których nie należy nigdy zapłacić za dużo.
SELECT
ROUND(2.567, 1) AS rounded,
TRUNC(2.567, 1) AS truncated;
-- ROUND gives 2.6 (5 rounds up)
-- TRUNC gives 2.5 (just cuts off)Używanie ROUND na prawdziwej tabeli
Funkcje zaokrąglające są najbardziej przydatne, gdy stosuje się je do kolumn tabeli. Poniżej tworzymy prostą tabelę products z cenami i używamy ROUND, aby wyświetlić je w przejrzysty sposób.
Ten wzorzec jest bardzo częsty w zapytaniach dotyczących handlu elektronicznego i księgowości, gdzie surowe obliczenia dają wiele miejsc po przecinku.
CREATE TABLE products (
name TEXT,
price NUMERIC
);
INSERT INTO products VALUES
('Widget', 9.999),
('Gadget', 24.3333),
('Doohickey', 4.5678);
SELECT name, ROUND(price, 2) AS display_price
FROM products;Łączenie funkcji w zapytaniu
Funkcje zaokrąglające można łączyć z innymi wyrażeniami SQL. Na przykład można obliczyć cenę po rabacie, a następnie zaokrąglić ją do wyświetlenia.
To zapytanie stosuje rabat 15%, zaokrągla wynik do 2 miejsc po przecinku, a także pokazuje wartości FLOOR i CEIL dla ceny po rabacie — dając minimalną i maksymalną cenę całkowitą.
SELECT
name,
price,
ROUND(price * 0.85, 2) AS discounted,
FLOOR(price * 0.85) AS min_price,
CEIL(price * 0.85) AS max_price
FROM products;Stronicowanie za pomocą CEIL
Klasycznym zastosowaniem CEIL jest obliczanie łącznej liczby stron w systemie stronicowania. Jeśli dostępnych jest 97 wierszy, a na każdej stronie wyświetlanych jest 10, potrzebują Państwo CEIL(97 / 10.0) = 10 stron (a nie 9, ponieważ na ostatniej stronie znajduje się 7 wierszy).
Zawsze należy dzielić przez liczbę dziesiętną (10.0, a nie 10), aby uniknąć dzielenia całkowitego, które odrzuciłoby resztę, zanim CEIL zdąży ją uwzględnić.
SELECT
97 AS total_rows,
10 AS rows_per_page,
CEIL(97 / 10.0) AS total_pages;Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat funkcji zaokrąglających w SQL.
Podsumowanie lekcji
Świetna praca! Oto podsumowanie funkcji zaokrąglających i obcinających w SQL:
- ROUND(n, d) — zaokrągla do d miejsc po przecinku zgodnie ze standardowymi zasadami matematycznymi (5 i więcej zaokrągla w górę).
- CEIL(n) — zawsze zaokrągla w górę do najbliższej liczby całkowitej.
- FLOOR(n) — zawsze zaokrągla w dół do najbliższej liczby całkowitej.
- TRUNC(n, d) — usuwa cyfry za pozycją d bez zaokrąglania; nigdy nie zwiększa wartości.
ROUND należy stosować do wyświetlania i statystyk, CEIL do obliczeń minimalnej wymaganej pojemności (na przykład liczby stron), FLOOR do obliczeń maksymalnej liczby elementów, które się zmieszczą, a TRUNC wtedy, gdy nie wolno nigdy zaokrąglić w górę — szczególnie w kontekście finansowym.
Często zadawane pytania
Czy lekcja „Zaokrąglanie i obcinanie” jest bezpłatna?
Tak — pełny tekst „Zaokrąglanie i obcinanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zaokrąglanie i obcinanie”?
ROUND, CEIL, FLOOR i TRUNC Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Zaokrąglanie i obcinanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Działania arytmetyczne i operatory
- Zaokrąglanie i obcinanie
- Dzielenie całkowite a dziesiętne
- Przydatne funkcje matematyczne