Так что это просто случай получения правильного синтаксиса для использования значения ячейки в качестве совпадения в запросе
=query(Sheet2!A:B,"select avg(B) where A='"&G2&"' group by A label avg(B) ''",1)
Обратите внимание, что вам на самом деле не нужна группа, если у вас уже есть список различных идентификаторов для сравнения, но вы не можете иметь агрегат, такой как avg, без него.
Чтобы получить 5 нижних, вы можете использовать фильтр и сортировать
=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5))
(я транспонировал результат, чтобы получить его в строке (строка 2) вместо столбца)
или вы можете использовать запрос
=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B limit 5 label B '' ",1))
Аналогично, чтобы получить топ-5, вы можете использовать
=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5,,1,false))
или
=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B desc limit 5 label B '' ",1))
В связи с этим возникает вопрос: можно ли получить эти результаты (а) без использования списка отдельных значений и (б) в формуле одного массива без копирования.
Вы, несомненно, могли бы получить различные идентификаторы и средние значения сразу же после запроса. Получить верхние или нижние значения n из ряда групп гораздо сложнее. Я пытался сделать это в предыдущем вопросе , но для этого требуется длинная и громоздкая формула.