0Pricing
SQL Academy · Урок

Арифметика и операторы

Складывайте, вычитайте, умножайте и делите в SQL

«Арифметика и операторы» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Вычисления в SELECT

SQL предназначен не только для получения строк. Вы можете вычислять значения непосредственно в запросе с помощью арифметических операторов.

В этом уроке Вы будете складывать, вычитать, умножать и делить, используя столбцы и константы, давать результатам имена и разберётесь, как PostgreSQL определяет тип каждого результата.

Представьте таблицу order_items со столбцами quantity и unit_price. Мы можем вычислить итог по строке, не затрагивая код приложения.

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

Пять арифметических операторов

PostgreSQL поддерживает обычные операторы:

  • + сложение
  • - вычитание
  • * умножение
  • / деление
  • % остаток от деления

Они работают с числовыми столбцами и константами так же, как в любом языке программирования. В следующем запросе показано действие каждого оператора.

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

Приоритет операторов

SQL следует стандартному математическому приоритету: *, / и % имеют более высокий приоритет, чем + и -.

Используйте скобки, чтобы явно обозначить замысел и изменить порядок вычислений по умолчанию. Два следующих выражения дают совершенно разные результаты.

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

Вычисление цены со скидкой

Распространённая практическая задача — применить процентную скидку. Умножьте цену на (1 - discount_rate).

Здесь discount_rate хранится в виде доли (0.15 = 15%). Скобки гарантируют, что вычитание будет выполнено до умножения.

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

Арифметика между столбцами

Операндами не обязательно должны быть константы. Вы можете объединять несколько столбцов в одном выражении.

Ниже мы вычисляем чистую прибыль от продажи: разницу между выручкой и затратами, умноженную на количество проданных единиц.

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

Именование результатов с помощью AS

Вычисляемые столбцы получают автоматически сгенерированные имена, например ?column?, если не задать им псевдонимы. Всегда используйте AS, чтобы давать им понятные имена.

Псевдоним также позволяет понятнее обращаться к столбцу в используемых инструментах и отчётах.

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

Арифметика в WHERE

Арифметику можно использовать и в предложении WHERE, а не только в SELECT.

Этот запрос отбирает заказы, в которых вычисленная сумма превышает 100. Обратите внимание: применение математической операции к столбцу может помешать использованию индекса, поэтому при высокой важности производительности предпочитайте обычные столбцы в условиях фильтрации.

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

Типы результатов определяются входными данными

PostgreSQL выводит тип результата из типов операндов. Сложение целых чисел даёт целое число; если хотя бы одна сторона имеет тип numeric или float, результат также будет иметь этот тип.

Это особенно важно при делении, которое мы разберём позже. Пока обратите внимание, как смешивание типов приводит к расширению типа результата.

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

Оператор остатка от деления

% возвращает остаток от деления целых чисел. Это удобно для циклической логики, например для выбора «каждой N-й строки» или проверки чётности значений.

Ниже мы находим идентификаторы чётных товаров с помощью % 2 = 0.

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

Изменение значений с помощью арифметики

Арифметика не ограничивается SELECT. Вы можете использовать её в UPDATE, чтобы изменять сохранённые значения.

Этот запрос повышает цену каждого товара в категории на 5%. Выражение справа вычисляется для каждой строки.

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

Остерегайтесь NULL

Любая арифметическая операция с NULL даёт NULL, поскольку результат неизвестен.

Если столбец может не содержать значения, оберните его в COALESCE, чтобы задать значение по умолчанию перед вычислениями.

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

Быстрая проверка

Какое значение принимает выражение 2 + 6 / 2 в PostgreSQL?

Итоги

Вы можете вычислять значения непосредственно в SQL:

  • + - * / % — основные операторы
  • *, /, % имеют более высокий приоритет, чем + и -; используйте скобки для ясности
  • Давайте вычисляемым столбцам псевдонимы с помощью AS
  • Арифметика работает в SELECT, WHERE и UPDATE
  • Тип результата определяется операндами, а любой операнд NULL делает результат NULL

Далее мы рассмотрим округление и усечение этих числовых результатов.

Часто задаваемые вопросы

Урок «Арифметика и операторы» бесплатный?

Да — полный текст урока «Арифметика и операторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Арифметика и операторы»?

Складывайте, вычитайте, умножайте и делите в SQL Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Арифметика и операторы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Арифметика и операторы
  2. Округление и усечение
  3. Целочисленное и десятичное деление
  4. Полезные математические функции
← Назад к SQL Academy