Есть ли способ проверить, равны ли минимальные и максимальные значения таблицы в SQL/Postgres?
Скажем, столбец:
Price
$3.00
$3.00
Мин и макс будут равны. Есть ли способ проверить это в предложении WHERE?
3 ответа
Есть сто лет HAVING
для фильтрации по агрегатам.
SELECT 1
FROM YOUR_TABLE
HAVING MAX(PRICE) = MIN(PRICE)
WITH t(price) AS ( VALUES
(3.00),
(3.00)
)
SELECT
CASE
WHEN max(price) = min(price) THEN TRUE
ELSE FALSE
END
FROM t;
Это способ сделать это в MS SQL, думаю, это должно как-то помочь вам для Postgres:
IF EXISTS (SELECT NULL FROM Table HAVING MAX(Price) = MIN(Price))
PRINT 'Equal'
ELSE
PRINT 'Not equal'
Еще один способ, вдохновленный ответом Дмитрия:
IF ((SELECT CASE WHEN MAX(Price) = MIN(Price) THEN 1 END FROM Table) = 1)
PRINT 'Equal'
ELSE
PRINT 'Not equal'