Я использую PostgreSQL 9.6 с запросом, который выглядит примерно так:
DO $$
DECLARE max_sales_date DATE ;
BEGIN
max_sales_date :=
select sales_date::date
from (
select count(sales_date::date)
, sales_date::date
, row_number() over (order by count(sales_date::date) desc) as rn
from Sales
group by sales_date::date
) a where a.rn = 1 ;
select *
from Sales
where sales_date = max_sales_date ;
END $$ ;
Как видите, я хочу получить день с наибольшим количеством продаж, сохранить его в переменной и использовать в другом запросе. Я знаю, что в этом случае переменная не нужна, но мне это нужно для другого шага, разработка которого еще не началась.
DBeaver 5.0, к сожалению, выдает мне следующее сообщение об ошибке:
Внутренняя ошибка драйвера jdbc
java.lang.ArrayIndexOutofBoundsException:
Я также должен упомянуть, что запрос, результат которого сохраняется в переменной, отлично работает при независимом использовании.
Поэтому у меня два вопроса:
- Почему не работает весь код?
- Как я могу достичь желаемого результата?
РЕДАКТИРОВАТЬ: приведенные ниже комментарии заставили меня понять, что я должен уточнить свои намерения: причина, по которой я хотел бы продолжать использовать переменную, заключается в том, что я планировал впоследствии выполнить некоторые простые вычисления (например, добавить один день, создать цикл и т. д. .). Если вы, ребята, сможете найти простое решение для этого без использования переменной, я тоже буду рад :)