Нужно ли выводить результат в долях или в процентах?
Что проверяют
Уточните ли вы постановку вместо угадывания и понимаете ли разницу между тем, что считается, и тем, что показывается. На техническом скрининге это ещё и проверка, помните ли вы про целочисленное деление и про аккуратное округление.
Как отвечать
Спросить у интервьюера, для кого результат, это нормальный ход, а не признак неуверенности. Дальше простое правило: в витринах, дашбордах и презентациях проценты, потому что их читают быстрее; в расчётах и хранении доли от нуля до единицы, потому что их потом умножают, усредняют и подставляют в формулы, и умножить на сто в самом конце проще, чем ловить сотни внутри промежуточных вычислений.
Явно проговорите оформление: подпись единицы в названии колонки, фиксированное округление и одинаковый знаменатель во всех метриках отчёта. Конверсия 0,0123 это 1,23%, и округлять её до целого процента можно только если бизнес действительно не различает десятые.
select round(100.0 * count(*) filter (where converted) / count(*), 2) as conv_pct
from sessions;Хорошее дополнение: рядом с долей почти всегда нужен знаменатель. Процент без базы не даёт оценить, случайность это или сигнал, поэтому в таблицу кладут и числитель, и общее количество.
Где спотыкаются
Делят целое на целое и получают ноль. В PostgreSQL count(*) / count(*) это целочисленное деление, спасает приведение к numeric или множитель 100.0, и на собеседовании это замечают в первую очередь.
Второе: усредняют проценты вместо того, чтобы считать процент от суммы. Среднее из дневных конверсий не равно общей конверсии за период, если трафик по дням разный, и итог получается тем сильнее смещён, чем неравномернее база.
Третье: путают проценты и процентные пункты. Рост конверсии с 2% до 3% это плюс один процентный пункт и плюс пятьдесят процентов относительно, и подмена одного другим превращает отчёт в дезинформацию.