😱 Ого что нашел!

Сейчас будет чисто технарская штука, остальным соболезную.



Проблема

Бывает, что у вас есть какая-то числовая переменная и зачастую неважно ее конкрентное значение. Важно, насколько оно круче остальных. Например, иногда хочется просто взять и показать топ-10%.



В данных бывают выбросы, их тоже надо уметь выбирать. Желательно, не тратя время на поиск магических констант, которые могут поменяться со временем.



Решение

Давайте разобьём метрику по корзинам! Например, заменим все ее значения на персентили. В результате получим столбец, значение которого покажет, в какой топ-N% входит оригинальное число.



В Postgres есть для этого готовая функция

NTILE(100) OVER (ORDER BY column DESC)



Пример на скрине

Для базы Twitter пользователей я считаю персентили числа их подписчиков. Мне неважно, 100М или 10М подписчиков у юзера. Важно, что он входит в топ-1%.