Есть ли способ проверить, равны ли минимальные и максимальные значения таблицы в 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'
Другие вопросы по тегам