блок case when?
На пример вот так - case when t1.col1 is true then sum(t2.col1) end.
Насколько я понял агрегатные функции всегда будут выполняться, так?
Там разные таблицы что ли? t1 и t2
да, таблица где происходит группировка и вычисляются агрегаты присоединяется к другой таблице, а та в свою очередь присоединяется lateralом, короче говоря t1.col1 это условие, оно берется с какой то таблицы слева
Ну что вам сказать. Не знаю, почему вы сомневаетесь, нужен ли case when. Запрос ведь работает? Видимо нужен, если вы хотите получать в каких-то случаях null. Единственное замечание, зачем: case when t1.col1 is true then Можно просто: case when t1.col1 then Ведь t1.col1 уже булевский
спасибо за ответ. да, запрос работает, я просто хотел избежать дополнительную нагрузку на базу с помощью этого условия.
Вообще можно sum(t2.col1) filter (where t1.col1) Почитать тут: https://postgrespro.ru/docs/postgrespro/11/sql-expressions#SYNTAX-AGGREGATES
да, я пробовал так, но судя по планировщику, сложность возрастала
Прикольно, не знал
А план при этом менялся? Время выполнения?
Обсуждают сегодня