Код Middle Parquet и партиционирование спрашивают часто обновлено

Какие row groups можно пропустить

Условие

Напишите groups_to_read(stats, op, value): stats список статистик row groups {"min": ..., "max": ..., "nulls": int, "rows": int} одной колонки. Условие фильтра: колонка op value, где op один из "=", ">", "<", ">=", "<=". Верните индексы групп, которые нельзя пропустить (в них может найтись подходящая строка). Группа, где все значения NULL (nulls == rows), всегда пропускается: NULL не удовлетворяет сравнению.

Примеры

groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], "=", 150) // [1]
groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], ">", 100) // [1]
groups_to_read([{"min":1,"max":100,"nulls":0,"rows":10}, {"min":101,"max":200,"nulls":0,"rows":10}], ">=", 100) // [0, 1]

Как подойти

Подсказки: 1
  1. Для > достаточно проверить max > value, для < проверить min < value.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.