#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!