FILTER для нескольких агрегатов за один проходВместо нескольких
CASE WHEN внутри агрегатных функций используйте FILTER:SELECT
COUNT(*) AS total_orders,
COUNT(*) FILTER (WHERE status = 'completed') AS completed,
COUNT(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders;
Результат:
total_orders | completed | cancelled
--------------+-----------+-----------
1523 | 1402 | 121
FILTER позволяет применять собственное условие к каждой агрегатной функции. Так запрос становится компактнее, легче читается и избавляет от множества CASE WHEN.👉 @SQLPortal