Перейти к содержанию
Innovialabs

Функция QUERY в Google Таблицах: анализ данных как в SQL

Продвинутое4 мин

Коротко

QUERY выполняет SQL-подобный запрос к диапазону — фильтрует, группирует, сортирует и переименовывает столбцы одной формулой, а в связке с IMPORTRANGE строит отчёты, которые обновляются вслед за исходной таблицей.

Короткий ответ

QUERY — функция Google Таблиц, которая принимает диапазон и текст запроса на языке, похожем на SQL:

=QUERY(данные; "запрос"; [заголовки])
  • данные — диапазон, например Заказы!A:F;
  • запрос — строка в кавычках;
  • заголовки — сколько верхних строк считать заголовками; лучше всегда указывать явно, обычно 1.

Части запроса пишутся строго в таком порядке: select, where, group by, pivot, order by, limit, offset, label, format. Любую часть можно пропустить, но нельзя переставить.

В русской локали аргументы функции разделяются точкой с запятой, а сам запрос всегда пишется английскими ключевыми словами.

Как ссылаться на столбцы

  • Если данные — обычный диапазон, столбцы обозначаются буквами: A, B, C, заглавными.
  • Если данные — результат другой функции (IMPORTRANGE, массив в фигурных скобках), используются Col1, Col2, Col3 — с заглавной C.
  • Текстовые значения в запросе берутся в одинарные кавычки: 'Ташкент'.

Пример данных — лист «Заказы»: A — дата, B — менеджер, C — город, D — товар, E — сумма, F — статус.

select и where

=QUERY(Заказы!A:F; "select A, B, E where F = 'Оплачен' and E > 100000"; 1)

Операторы в where:

  • сравнение: =, !=, <>, >, <, >=, <=;
  • логика: and, or, not;
  • пустые значения: is null, is not null;
  • текст: contains, starts with, ends with, like (знаки % и _), matches (регулярное выражение).

Сравнение текста в QUERY учитывает регистр: 'ташкент' и 'Ташкент' — разные значения. Если данные заполнены вразнобой, используйте lower(C) = 'ташкент'.

Значение условия можно взять из ячейки, склеив строку:

=QUERY(Заказы!A:F; "select A, B, E where C = '"&H1&"'"; 1)

group by и агрегаты

Выручка и количество заказов по менеджерам:

=QUERY(Заказы!A:F; "select B, sum(E), count(A) where F = 'Оплачен' group by B order by sum(E) desc"; 1)
  • Агрегатные функции: sum, count, avg, min, max.
  • Правило: каждый столбец в select без агрегатной функции должен быть указан в group by.

pivot

pivot превращает значения столбца в заголовки — получается сводная таблица одной формулой:

=QUERY(Заказы!A:F; "select B, sum(E) where F = 'Оплачен' group by B pivot C"; 1)

Строки — менеджеры, столбцы — города, на пересечении — выручка.

order by, limit, label, format

=QUERY(Заказы!A:F; "select B, sum(E) group by B order by sum(E) desc limit 10 label B 'Менеджер', sum(E) 'Выручка' format sum(E) '#,##0'"; 1)
  • order by ... desc — сортировка по убыванию;
  • limit 10 — первые 10 строк, удобно для рейтингов;
  • label — понятные заголовки вместо «sum Сумма»;
  • format — числовой формат результата.

Работа с датами

Дата в запросе пишется как литерал date 'ГГГГ-ММ-ДД':

=QUERY(Заказы!A:F; "select B, sum(E) where A >= date '2025-03-01' and A < date '2025-04-01' group by B"; 1)

Чтобы брать дату из ячейки H1, переведите её в нужный формат через TEXT:

=QUERY(Заказы!A:F; "select B, sum(E) where A >= date '"&TEXT(H1;"yyyy-mm-dd")&"' group by B"; 1)

Функции year(A) и month(A) позволяют группировать по периодам. Важная деталь: month() нумерует месяцы с нуля, январь — это 0. Учитывайте это в подписях или храните номер месяца во вспомогательном столбце.

QUERY + IMPORTRANGE: живой отчёт

Отчёт в отдельном файле, который читает данные из рабочей таблицы:

=QUERY(IMPORTRANGE("ссылка_на_таблицу"; "Заказы!A:F"); "select Col2, sum(Col5) where Col6 = 'Оплачен' group by Col2 label sum(Col5) 'Выручка'"; 1)
  • После IMPORTRANGE столбцы называются Col1, Col2…, а не буквами.
  • В первый раз дайте доступ: вставьте IMPORTRANGE отдельно в пустую ячейку и нажмите «Открыть доступ». После этого можно использовать её внутри QUERY.
  • Отчёт обновляется вслед за исходной таблицей, но не мгновенно — с небольшой задержкой.

Частые ошибки

  • Смешанные типы в столбце. QUERY определяет тип столбца по большинству значений, остальные превращает в пустые. Если в столбце сумм есть текст, часть строк молча пропадёт.
  • Не указан аргумент заголовков. QUERY угадывает сам и иногда склеивает первые строки данных с заголовком.
  • Буквы вместо ColN после IMPORTRANGE и наоборот.
  • Неверный порядок частей запроса — например, order by перед group by.
  • Вставка столбцов в источник сдвигает буквы, и отчёт начинает считать не те данные. Новые столбцы добавляйте в конец.

Частые вопросы

Нет, это функция Google Таблиц. В Excel похожие задачи решают Power Query, сводные таблицы и функции динамических массивов вроде ФИЛЬТР и СОРТ.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.