Простейшие арифметические операции (+ - * /)

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

Сложение

Для сложения двух значений достаточно поставить + между ними:

SELECT 1 + 2 AS result
# result
1 3

Можно писать выражения посложнее:

SELECT 1 + 2 + 3 AS result
# result
1 6

Вычитание

SELECT 3 - 2 AS result
# result
1 1
SELECT 2 - 3 AS result
# result
1 -1

Определим, на сколько цена товара в магазине отличается от минимальной цены на этот товар по всем магазинам:

SELECT pp.product_id,
       pp.store_id,
       pp.price,
       pp.price - (
         -- минимальная цена на продукт
         SELECT min (ppa.price)
           FROM product_price ppa
          WHERE ppa.product_id = pp.product_id
       ) AS diff_min
  FROM product_price pp
 ORDER BY pp.product_id, pp.price
# product_id store_id price diff_min
1 1 300 10500.00 0.00
2 1 800 12000.00 1500.00
3 1 301 12500.00 2000.00
4 2 500 26100.00 0.00
5 2 600 27500.00 1400.00
6 3 500 22000.00 0.00
... ... ... ... ...

Умножение

SELECT 3 * 3 AS result
# result
1 9
SELECT 3 * 9 AS result
# result
1 27

Определим размер 25% скидки от стоимости товара

SELECT pp.product_id,
       pp.store_id,
       pp.price,
       pp.price * 0.25 AS discount
  FROM product_price pp
 ORDER BY pp.product_id,
       pp.store_id
# product_id store_id price discount
1 1 300 10500.00 2625.0000
2 1 301 12500.00 3125.0000
3 1 800 12000.00 3000.0000
4 2 500 26100.00 6525.0000
... ... ... ... ...

Деление

SELECT 27 / 3 AS result
# result
1 9

Определим четверть стоимости товара

SELECT pp.product_id,
       pp.store_id,
       pp.price,
       pp.price / 4 AS discount
  FROM product_price pp
 ORDER BY pp.product_id,
       pp.store_id
# product_id store_id price discount
1 1 300 10500.00 2625.0000
2 1 301 12500.00 3125.0000
3 1 800 12000.00 3000.0000
4 2 500 26100.00 6525.0000
... ... ... ... ...

7.9 TRANSLATE - замена набора символов

8.2 Порядок выполнения операций