0Pricing
SQL Academy · Lekcja

Działania arytmetyczne i operatory

Dodawaj, odejmuj, mnóż i dziel w SQL

Działania arytmetyczne i operatory to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 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.

Obliczenia w SELECT

SQL służy nie tylko do pobierania wierszy. Wartości można obliczać bezpośrednio w zapytaniu za pomocą operatorów arytmetycznych.

W tej lekcji nauczą się Państwo dodawać, odejmować, mnożyć i dzielić, korzystając z kolumn oraz literałów, nadawać wynikom nazwy i rozumieć, jak PostgreSQL ustala typ każdego wyniku.

Wyobraźmy sobie tabelę order_items zawierającą kolumny quantity i unit_price. Możemy obliczyć sumę pozycji bez ingerowania w kod aplikacji.

SELECT quantity, unit_price, quantity * unit_price AS line_total
FROM order_items;

Pięć operatorów arytmetycznych

PostgreSQL obsługuje standardowe operatory:

  • + dodawanie
  • - odejmowanie
  • * mnożenie
  • / dzielenie
  • % modulo (reszta z dzielenia)

Działają one na kolumnach liczbowych i literałach tak samo jak w każdym języku programowania. Poniższe zapytanie pokazuje działanie każdego z nich.

SELECT
  10 + 3  AS sum,
  10 - 3  AS difference,
  10 * 3  AS product,
  10 / 3  AS quotient,
  10 % 3  AS remainder;

Priorytet operatorów

SQL stosuje standardowy priorytet działań matematycznych: *, / i % mają wyższy priorytet niż + i -.

Nawiasy pozwalają jednoznacznie określić zamierzone działanie i zmienić domyślną kolejność. Dwa poniższe wyrażenia dają zupełnie różne wyniki.

SELECT
  2 + 3 * 4        AS without_parens,  -- 14
  (2 + 3) * 4      AS with_parens;     -- 20

Obliczanie ceny po rabacie

Częste zadanie w praktyce: zastosowanie rabatu procentowego. Należy pomnożyć cenę przez (1 - discount_rate).

W tym przypadku discount_rate jest przechowywany jako ułamek (0.15 = 15%). Nawiasy gwarantują, że odejmowanie zostanie wykonane przed mnożeniem.

SELECT
  product_id,
  price,
  discount_rate,
  price * (1 - discount_rate) AS final_price
FROM products;

Obliczenia na wielu kolumnach

Operandy nie muszą być literałami. W jednym wyrażeniu można łączyć wiele kolumn.

Poniżej obliczamy zysk netto ze sprzedaży: przychód pomniejszony o koszt, pomnożony przez liczbę sprzedanych sztuk.

SELECT
  sale_id,
  (sale_price - cost) * quantity AS profit
FROM sales;

Nadawanie wynikom nazw za pomocą AS

Obliczane kolumny otrzymują automatycznie nazwy, takie jak ?column?, chyba że nadadzą im Państwo alias. Zawsze warto używać AS, aby nadawać im czytelne nazwy.

Alias pozwala również wyraźniej odwoływać się do kolumny w używanych narzędziach i raportach.

SELECT
  base_salary,
  base_salary * 0.10 AS bonus,
  base_salary + base_salary * 0.10 AS total_pay
FROM employees;

Obliczenia w WHERE

Obliczeń arytmetycznych można używać również w klauzuli WHERE, a nie tylko w SELECT.

To zapytanie filtruje zamówienia, dla których obliczona suma przekracza 100. Uwaga: wykonywanie obliczeń na kolumnie może uniemożliwić użycie indeksu, dlatego gdy wydajność ma znaczenie, warto preferować filtrowanie po samych kolumnach.

SELECT order_id, quantity, unit_price
FROM order_items
WHERE quantity * unit_price > 100;

Typ wyniku wynika z operandów

PostgreSQL wywnioskuje typ wyniku na podstawie operandów. Dodanie liczby całkowitej do liczby całkowitej daje liczbę całkowitą; jeśli jedna ze stron ma typ numeric lub float, wynik również będzie miał taki typ.

Ma to największe znaczenie przy dzieleniu, któremu przyjrzymy się później. Na razie warto zauważyć, jak mieszanie typów powoduje promocję typu wyniku.

SELECT
  pg_typeof(4 + 2)        AS int_type,      -- integer
  pg_typeof(4 + 2.0)      AS numeric_type,  -- numeric
  pg_typeof(4 * 1.5);                        -- numeric

Operator modulo

% zwraca resztę z dzielenia całkowitego. Jest przydatny w logice cyklicznej, na przykład do wybierania „co N-tego wiersza” lub sprawdzania, czy wartości są parzyste albo nieparzyste.

Poniżej wyszukujemy identyfikatory parzystych produktów za pomocą % 2 = 0.

SELECT product_id, name
FROM products
WHERE product_id % 2 = 0;

Aktualizowanie wartości za pomocą obliczeń

Obliczenia arytmetyczne nie ograniczają się do SELECT. Można ich używać również w UPDATE do modyfikowania przechowywanych wartości.

To zapytanie podnosi cenę każdego produktu w danej kategorii o 5%. Wyrażenie po prawej stronie jest obliczane dla każdego wiersza.

UPDATE products
SET price = price * 1.05
WHERE category = 'electronics';

Uwaga na NULL

Każde działanie arytmetyczne z udziałem NULL daje wynik NULL, ponieważ wynik jest nieznany.

Jeśli kolumna może nie zawierać wartości, należy użyć COALESCE, aby przed wykonaniem obliczeń podstawić wartość domyślną.

SELECT
  base + NULL                     AS is_null,      -- NULL
  base + COALESCE(bonus, 0)       AS safe_total
FROM payroll;

Szybkie sprawdzenie

Jaki wynik w PostgreSQL daje wyrażenie 2 + 6 / 2?

Podsumowanie

Wartości można obliczać bezpośrednio w SQL:

  • + - * / % to podstawowe operatory
  • *, / i % mają wyższy priorytet niż + i -; aby jednoznacznie określić kolejność, należy używać nawiasów
  • Obliczanym kolumnom należy nadawać aliasy za pomocą AS
  • Obliczenia działają w SELECT, WHERE i UPDATE
  • Typ wyniku wynika z operandów, a dowolny operand NULL sprawia, że wynik również ma wartość NULL

W następnej części zajmiemy się zaokrąglaniem i obcinaniem tych wyników liczbowych.

Często zadawane pytania

Czy lekcja „Działania arytmetyczne i operatory” jest bezpłatna?

Tak — pełny tekst „Działania arytmetyczne i operatory” 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 „Działania arytmetyczne i operatory”?

Dodawaj, odejmuj, mnóż i dziel w SQL Ć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 1 z 4.

Ile czasu zajmuje lekcja „Działania arytmetyczne i operatory”?

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

  1. Działania arytmetyczne i operatory
  2. Zaokrąglanie i obcinanie
  3. Dzielenie całkowite a dziesiętne
  4. Przydatne funkcje matematyczne
← Powrót do SQL Academy