0Pricing
SQL Interview Prep · Lekcja

Kolumny obliczane i pierwszeństwo operatorów

Arytmetyka, konkatenacja i pierwszeństwo operatorów na listach SELECT

Kolumny obliczane i pierwszeństwo operatorów to bezpłatna lekcja SQL Interview Prep 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 Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.

Kolumny obliczane w SELECT

Kolumna obliczana to wyrażenie w SELECT, które wyprowadza wartość zamiast odczytywać ją bezpośrednio — na przykład price * quantity. Zawsze należy nadać jej czytelny alias.

SELECT product,
       price,
       quantity,
       price * quantity AS line_total
FROM order_items;

Operatory arytmetyczne

SQL ma typowe operatory matematyczne: +, -, *, / oraz operator modulo. Typ wyniku zależy od operandów — i właśnie tutaj kryje się kolejna pułapka.

SELECT 7 + 3 AS sum_val,
       7 - 3 AS diff_val,
       7 * 3 AS prod_val,
       7 % 3 AS remainder;

Pułapka dzielenia całkowitoliczbowego

Uwaga: dzielenie dwóch liczb całkowitych wykonuje dzielenie całkowitoliczbowe, więc 5 / 2 daje wynik 2, a nie 2.5. Można temu zapobiec, rzutując jedną stronę na typ dziesiętny albo mnożąc ją przez 1.0.

SELECT 5 / 2          AS int_div,    -- 2
       5 * 1.0 / 2    AS real_div,   -- 2.5
       CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5

Priorytet operatorów

SQL stosuje standardowy matematyczny priorytet: * i / są wykonywane przed + i -. Dlatego 2 + 3 * 4 daje 14, a nie 20. Nawiasy zmieniają tę kolejność.

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

Priorytet operatorów w rzeczywistym zapytaniu o rabat

Błędy związane z priorytetem często pojawiają się w logice biznesowej. W przypadku ceny po rabacie price - price * rate jest poprawne, ponieważ * jest wykonywane najpierw. Zawsze należy sprawdzić, czy grupowanie faktycznie używane przez silnik jest zgodne z założeniami.

SELECT price,
       discount_rate,
       price - price * discount_rate / 100 AS net_price
FROM products;

Konkatenacja ciągów znaków

Łączenie tekstu zależy od bazy danych: || w Postgresie i standardowym SQL, + w SQL Serverze oraz CONCAT() w MySQL. CONCAT() to bezpieczny i przenośny wybór.

-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;

-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;

NULL psuje działania arytmetyczne

To ważna zasada: dowolne działanie matematyczne z NULL daje NULL. Dlatego base_salary + bonus ma wartość NULL dla każdej osoby, dla której brakuje premii. Należy opakować ryzykowne kolumny w COALESCE, aby dostarczyć wartość domyślną.

SELECT base_salary,
       bonus,
       base_salary + bonus            AS unsafe_total,
       base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;

Konkatenacja i NULL w zależności od dialektu

NULL dotyczy również tekstu, a poszczególne dialekty zachowują się różnie: Postgres sprawia, że cały ciąg znika, natomiast CONCAT w SQL Serverze traktuje NULL jak pusty tekst. Należy opakować każdy element w COALESCE, aby uzyskać przewidywalny wynik.

SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;

Funkcje wewnątrz wyrażeń

Kolumny obliczane mogą bez problemu zawierać funkcje takie jak ROUND, ABS czy UPPER. Wywołanie funkcji jest po prostu kolejnym wyrażeniem, dlatego można bezpośrednio zagnieżdżać je w działaniach matematycznych.

SELECT product,
       ROUND(price * quantity * 1.0, 2) AS line_total,
       UPPER(product)                   AS product_caps
FROM order_items;

Wymuszanie typów i CAST

Gdy typy operandów się różnią, SQL wykonuje niejawne konwertowanie typów, które może prowadzić do niespodzianek. Należy jawnie używać CAST(expr AS type) — osoby prowadzące rozmowy techniczne odczytują to jako staranny i defensywny kod.

SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;

Wyrażenia logiczne jako kolumny

Porównanie takie jak price > 100 samo jest wyrażeniem. Postgres może zwrócić je w SELECT jako true/false, ale przenośne rozwiązanie opakowuje je w CASE, aby zwrócić 1/0 albo etykietę.

-- Portable
SELECT product,
       CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;

Szybkie sprawdzenie

Oblicz wyrażenie.

Podsumowanie

Podsumowanie: należy nadawać aliasy kolumnom obliczanym. W przypadku dzielenia dziesiętnego należy stosować rzutowanie, pamiętać o priorytecie operatorów, używać CONCAT() do przenośnego łączenia tekstu — i pamiętać, że NULL psuje działania matematyczne, dlatego należy zabezpieczać je za pomocą COALESCE.

Często zadawane pytania

Czy lekcja „Kolumny obliczane i pierwszeństwo operatorów” jest bezpłatna?

Tak — pełny tekst „Kolumny obliczane i pierwszeństwo operatorów” 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 Interview Prep, przejdź na CoddyKit PRO. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Kolumny obliczane i pierwszeństwo operatorów”?

Arytmetyka, konkatenacja i pierwszeństwo operatorów na listach SELECT Ćwiczysz SQL Interview Prep 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 Interview Prep?

Nie wymagamy żadnego doświadczenia. SQL Interview Prep 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 „Kolumny obliczane i pierwszeństwo operatorów”?

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 Interview Prep?

Tak. Każda lekcja SQL Interview Prep 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. Projekcja kolumn i pułapki aliasów
  2. Kolumny obliczane i pierwszeństwo operatorów
  3. DISTINCT a GROUP BY w uzyskiwaniu unikatowości
  4. Wyrażenia CASE w SELECT
← Powrót do SQL Interview Prep