Как ограничить количество записей, возвращаемых при использовании нескольких совпадений в запросе Google Таблиц

#google-sheets

#google-sheets

Вопрос:

Ниже приведена структура моего документа Google Sheets. Я хочу ограничить количество результатов, возвращаемых запросом, но для каждого совпадения, а не для всего запроса.

Вот как выглядит моя текущая формула

 =query({Sheet5!A2:B}, " select * where Col1 matches 'School A|School B|School C' 
and Col2 is not null desc limit 5 ")
  

Итак, что здесь происходит, так это то, что формула находит все совпадения в соответствии с запросом формулы и продолжает ограничивать общее количество записей до 5. Я хочу ограничить результаты до 5 для каждого совпадения, чтобы результаты школы A были равны 5, результаты школы B также равны 5 и т.д.

введите описание изображения здесь

Спасибо

Ответ №1:

Предлагаемое решение:

Массивы

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

Например:

 ={1,1,1;2,2,2;3,3,3}
  

Дает вам это:

введите описание изображения здесь

Ваш пример

Вы можете сделать что-то подобное для 3 отдельных запросов, поместив все запросы между {} ними и разделив их символом ; :

 ={
query(Sheet1!A2:B, "SELECT * WHERE A MATCHES 'School A' AND B IS NOT NULL ORDER BY B DESC LIMIT 5", 0);
query(Sheet1!A2:B, "SELECT * WHERE A MATCHES 'School B' AND B IS NOT NULL ORDER BY B DESC LIMIT 5", 0);
query(Sheet1!A2:B, "SELECT * WHERE A MATCHES 'School C' AND B IS NOT NULL ORDER BY B DESC LIMIT 5", 0)
}
  

Что даст вам что-то вроде этого:

введите описание изображения здесь


В SQL можно выполнить GROUP_CONCAT и превратить его в один запрос, но AFAIK запрос Google Sheets этого не поддерживает. В любом случае этот способ казался проще, если вы не хотите упорядочивать глобально по столбцу B!

Ссылки