Это проблема с кодом режима отладки.
Единственное надежное решение (для вызовов функций) - это весь код отладки внутри самого макроса.
Для Например, вы могли бы использовать следующий код вместо этого:
LOG("message", GetCategory());
Тогда препроцессор уничтожит все заявление в Release, и вам больше не придется об этом беспокоиться.
Я думаю, вы хотите:
select tt.category, tt.shop_name, tt.price, tt.updated, tt.avg_price,
dense_rank() over (partition by tt.category order by tt.avg_price desc)
from (select category, lower(shop_name) as shop_name,
(price::int) as price, updated::date as updated,
avg(price) over (partition by category, lower(shop_name)) as avg_price
from prices
) tt
Я упростил некоторые из логики, но главное изменение - partition by
для rank()
. Вы, кажется, хотите рейтинг для каждого магазина. dense_rank()
также более уместно.
Если вы хотите дифференцировать категории с одинаковой переизбыточной ценой:
dense_rank() over (partition by tt.shop_name order by tt.avg_price desc, category)