#window #snowflake-cloud-data-platform
Вопрос:
SELECT BEST_CAV_BUSINESS_UNIT_NAME, SCMS_NAME
, SUM(TOTAL_ACV - MULTI_YEAR_COMPONENT_OF_ACV) OVER (PARTITION BY BEST_CAV_BUSINESS_UNIT_NAME, QUARTER_WITH_YEAR) AS Bookings_Net
, ROW_NUMBER() OVER (ORDER BY Bookings_Net DESC)
FROM SBG_DB.SBG_SBGIOPS_BV.BV_SECURITY_SUBSCRIPTION_TOP_CUSTOMERS_FOR_ACV
where EDITION IS NOT NULL
AND BEST_CAV_BUSINESS_UNIT_NAME IS NOT NULL
AND (NEW_ACV <> 0 OR RENEW_acv <> 0 AND total_acv <> 0)
AND QUARTER_WITH_YEAR IN ('20213')
ORDER BY Bookings_Net DESC
Для приведенного выше запроса я получаю следующую ошибку
«Может не быть вложено в другую оконную функцию» — Ошибка компиляции
Комментарии:
1. У вас есть две оконные функции, когда кажется, что у вас может быть только одна. Просто используйте ROW_NUMBER() из раздела функции первого окна.
Ответ №1:
Попробуйте это :
select
*
, ROW_NUMBER() OVER (ORDER BY Bookings_Net DESC)
from
(
SELECT
BEST_CAV_BUSINESS_UNIT_NAME
, SCMS_NAME
, SUM(TOTAL_ACV - MULTI_YEAR_COMPONENT_OF_ACV) OVER (PARTITION BY BEST_CAV_BUSINESS_UNIT_NAME, QUARTER_WITH_YEAR) AS Bookings_Net
FROM
SBG_DB.SBG_SBGIOPS_BV.BV_SECURITY_SUBSCRIPTION_TOP_CUSTOMERS_FOR_ACV
where
EDITION IS NOT NULL
AND BEST_CAV_BUSINESS_UNIT_NAME IS NOT NULL
AND (NEW_ACV <> 0 OR RENEW_acv <> 0 AND total_acv <> 0)
AND QUARTER_WITH_YEAR IN ('20213') )
ORDER BY Bookings_Net DESC