Список ORDER BY оконной рамки RANGE имеет общий размер 1020 байт. Максимально поддерживаемый размер равен 900 байт. Как исполнить запрос?

Ссылка скопирована
1 ответ

На этот запрос

select death.location, death.continent, death.date, death.population, vacs.new_vaccinations , SUM(CONVERT(int,vacs.new_vaccinations)) OVER (Partition by death.Location Order by death.location, death.Date) as RollingPeopleVaccinated --, (RollingPeopleVaccinated/population)*100  from PortfolioCovid.dbo.Deaths death Join PortfolioCovid.dbo.Vaccinations vacs 	on death.location = vacs.location 	and death.date = vacs.date where death.continent is not null

select death.location, death.continent, death.date, death.population, vacs.new_vaccinations , SUM(CONVERT(int,vacs.new_vaccinations)) OVER (Partition by death.Location Order by death.location, death.Date) as RollingPeopleVaccinated --, (RollingPeopleVaccinated/population)*100 from PortfolioCovid.dbo.Deaths death Join PortfolioCovid.dbo.Vaccinations vacs on death.location = vacs.location and death.date = vacs.date where death.continent is not null

Microsoft SQL server говорит

Список ORDER BY оконной рамки RANGE имеет общий размер 1020 байт. Максимально поддерживаемый размер равен 900 байт.

Список ORDER BY оконной рамки RANGE имеет общий размер 1020 байт. Максимально поддерживаемый размер равен 900 байт.

Как "расширить" размер до необходимо размера, чтобы запрос выполнился?

Дополнительно:

А за каким хреном сортировка по death.location в группе по death.location? поверь на слово, во всей группе в этом поле одно и то же значение...

  • Akina, спа-си-бо!

    убрал order by и запрос исполнился

    я ещё новичок и могу сам себе усложнять жизнь

  • убрал order by и запрос исполнился

    А вот это зря... ORDER BY death.Date надо было оставить. А то он же ж тебе может посчитать накопление с отфонарным порядком дат.

  • точно

    я наконец-то исправил этот запрос

    спасибо за помощь!

  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Максим Павлов Ответ

    Для решения данной проблемы с оконными функциями в SQL, где список ORDER BY оконной рамки RANGE имеет общий размер 1020 байт, а максимально поддерживаемый размер равен 900 байт, можно воспользоваться следующим подходом.

    Один из способов уменьшить размер списка ORDER BY в оконной функции - это использовать подзапросы для определения порядка сортировки. Например, вместо того чтобы непосредственно указывать все поля ORDER BY в оконной функции, вы можете создать подзапрос, который сначала сортирует данные и затем применяет оконную функцию к отсортированным данным.

    Вот пример использования подзапроса для решения данной проблемы:

    WITH sorted_data AS (
        SELECT 
            id, 
            VALUE, 
            ROW_NUMBER() OVER (ORDER BY field1, field2) AS rn
        FROM your_table
    )
    SELECT 
        id, 
        VALUE, 
        SUM(VALUE) OVER (ORDER BY rn RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total
    FROM sorted_data;

    WITH sorted_data AS ( SELECT id, value, ROW_NUMBER() OVER (ORDER BY field1, field2) AS rn FROM your_table ) SELECT id, value, SUM(value) OVER (ORDER BY rn RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total FROM sorted_data;

    В этом примере мы создаем общий таблицу `sorted_data`, которая сначала сортирует данные по полям `field1` и `field2`, присваивает каждой строке номер строки `rn`, а затем применяет оконную функцию `SUM` к отсортированным данным, используя номер строки `rn` в качестве порядка сортировки.

    Таким образом, вы можете избежать проблемы с превышением максимального размера списка ORDER BY в оконной функции, используя подзапросы для определения порядка сортировки данных. Надеюсь, это поможет вам решить вашу проблему!

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно