Расчет децильных интервалов в снежинке
У меня есть относительно простой (надеюсь) вопрос Snowflake SQL, на который я не смог ответить для себя онлайн. Для простоты, скажем так, у меня есть одна простая таблица со столбцом идентификаторов и столбцом значений.
Id | Value
-------------------
A | 100 |
B | 245 |
C | 80 |
D | 370 |
E | 65 |
Я хотел бы рассчитать децильные сегменты для столбца значения. До сих пор я нашел только команды, которые будут добавлять децильный ранг в качестве дополнительного столбца, ранжируя каждое значение между 0-9. Однако это не совсем то, что мне нужно. Мне больше интересно узнать, что на самом деле представляют собой эти децили. Например, для дециля 0 я хотел бы знать интервал, для которого он охватывает, скажем, что-то похожее, например, на [0,99). Кто-нибудь знает, как генерировать эти данные? Спасибо!
1 ответ
Вы можете использовать агрегацию:
select tile, min(value), max(value)
from (select t.*, ntile(10) over (order by value) as tile
from t
) t
group by tile
order by tile;
Обратите внимание, что ntile()
может не справиться с галстуками так, как вы ожидаете. Но дело в том, что если вы можете получить логику в дополнительном столбце, то агрегация получит нужные вам диапазоны.