QUERY в Google Таблицах: SELECT, WHERE, GROUP BY и PIVOT на примерах
QUERY превращает диапазон Google Таблиц в новый отчёт: выбирает столбцы, фильтрует строки, группирует значения и разворачивает категории в колонки. Главное — различать аргументы самой функции и текст запроса, который использует язык Google Visualization.
- Что делает QUERY
- Синтаксис функции
- Подготовьте диапазон
- SELECT: выберите и переставьте столбцы
- WHERE: отфильтруйте строки
- GROUP BY: соберите итог по категориям
- PIVOT: разверните значения в колонки
- ORDER BY, LIMIT и OFFSET
- Храните запрос в отдельной ячейке
- Как исправлять ошибки
- QUERY и данные из другой таблицы
- Официальная документация
- Вопросы и ответы
Что делает QUERY
Функция QUERY выполняет запрос к диапазону и возвращает динамическую таблицу. Исходные строки остаются на месте, а результат пересчитывается при изменении данных. Это удобно для отчётов, где нужно повторяемо отобрать оплаченные заказы, сгруппировать выручку по менеджерам или развернуть категории по колонкам.
QUERY похож на SQL, но не является полным SQL. В языке запросов Google Visualization есть `select`, `where`, `group by`, `pivot`, `order by`, `limit`, `offset`, `label` и `format`, но нет обычной конструкции `from` и полноценного соединения таблиц. Не переносите SQL-запрос без адаптации.
Для общего знакомства с диапазонами, совместной работой и формулами сначала посмотрите обзор Google Таблиц.
Синтаксис функции
=QUERY(данные; запрос; [заголовки])
- данные — исходный диапазон или массив.
- запрос — текст на языке Google Visualization, заключённый в кавычки или взятый из ячейки.
- заголовки — число строк заголовка в начале диапазона; если аргумент пропущен или равен −1, функция пытается определить его автоматически.
В русской локали разделителем аргументов обычно служит точка с запятой. В другой локали может использоваться запятая. Внутри строки запроса запятые между выбранными столбцами сохраняются, а ключевые слова пишутся на английском. Колонки диапазона обозначаются буквами A, B, C, а не текстом заголовка.
Простой выбор столбцов
=QUERY(A1:F; "select A, B, E"; 1)
Формула возвращает столбцы A, B и E из диапазона A1:F. Последний аргумент 1 сообщает, что первая строка — заголовок.
Подготовьте диапазон
Одна строка должна означать один объект: заказ, платёж, обращение или запись. В столбце желательно хранить один тип данных. Официальная справка Google предупреждает: если в колонке смешаны типы, преобладающий тип определяет тип столбца, а значения остальных типов рассматриваются как пустые. Поэтому числа, сохранённые как текст, могут исчезнуть из суммы.
- Уберите объединённые ячейки внутри данных.
- Не вставляйте промежуточные заголовки между строками.
- Приведите даты к настоящему типу даты, а не визуально похожему тексту.
- Проверьте пробелы и регистр категорий.
- Зафиксируйте число строк заголовка явно.
Для примеров предположим, что A — дата, B — менеджер, C — категория, D — регион, E — выручка, F — статус.
SELECT: выберите и переставьте столбцы
`select` задаёт столбцы и их порядок. Формула ниже возвращает менеджера, регион и выручку:
=QUERY(A1:F; "select B, D, E"; 1)
Можно использовать выражения и агрегаты, но обычный столбец рядом с агрегатом должен участвовать в `group by`. Если запрос содержит только `select sum(E)`, результатом будет одна агрегированная строка.
WHERE: отфильтруйте строки
`where` задаёт условие. Текстовые значения заключают в одинарные кавычки внутри строки запроса:
=QUERY(A1:F; "select A, B, E where F = 'Оплачен' and E > 0"; 1)
Сравнение строк чувствительно к регистру для ряда операций языка запросов, поэтому сначала нормализуйте категории либо применяйте функции `lower()` и `upper()` там, где это уместно. Для пропусков используйте `is null` и `is not null`, а не сравнение с пустой строкой во всех случаях.
Дата в запросе записывается литералом `date` в формате год-месяц-день:
=QUERY(A1:F; "select A, B, E where A >= date '2026-07-01' and A < date '2026-08-01'"; 1)
Такой полуоткрытый интервал включает июль и не зависит от наличия времени в последнем дне. Если дата хранится текстом, сначала преобразуйте источник.
GROUP BY: соберите итог по категориям
Чтобы получить выручку по менеджерам, выберите B и сумму E, затем сгруппируйте по B:
=QUERY(A1:F; "select B, sum(E) where F = 'Оплачен' group by B label sum(E) 'Выручка'"; 1)
`label` меняет заголовок результата, но не идентификатор в запросе. Нельзя написать `select Менеджер`, если это лишь видимое название колонки B. При группировке каждый выбранный неагрегированный столбец должен быть указан в `group by`; иначе запрос завершится ошибкой разбора.
| Агрегат | Назначение | Проверка |
|---|---|---|
| sum(E) | Сумма числового столбца | Числа не сохранены как текст |
| avg(E) | Среднее непустых значений | Понимать состав и пропуски |
| count(E) | Количество непустых числовых значений | Не путать со всеми строками |
| min(E), max(E) | Минимум и максимум | Нет ошибочных выбросов |
PIVOT: разверните значения в колонки
`pivot` создаёт отдельные колонки для уникальных значений указанного поля и подразумевает агрегирование. Например, выручка менеджеров по категориям:
=QUERY(A1:F; "select B, sum(E) where F = 'Оплачен' group by B pivot C label sum(E) 'Выручка'"; 1)
Каждая уникальная категория C станет колонкой. Перед публикацией отчёта нормализуйте написание: «Сервис» и «сервис» способны превратиться в разные значения. Если категорий сотни, PIVOT создаст слишком широкий результат; лучше заранее ограничить набор или выбрать другой формат.
ORDER BY, LIMIT и OFFSET
Сортировать можно по столбцу или агрегату:
=QUERY(A1:F; "select B, sum(E) where F = 'Оплачен' group by B order by sum(E) desc limit 10"; 1)
Формула возвращает десять менеджеров с наибольшей суммой. `offset` пропускает заданное число первых строк после сортировки и может использоваться вместе с `limit`, но это не стабильная пагинация, если порядок не определён однозначно.
Храните запрос в отдельной ячейке
Длинный текст удобнее поместить, например, в H1 и передать ссылкой:
=QUERY(A1:F; H1; 1)
Плюсы — запрос легче читать и менять. Минус — пользователь может случайно отредактировать его, поэтому подпишите ячейку и защитите диапазон по правилам команды. Для динамического условия соединяйте строки аккуратно и проверяйте кавычки. Дату лучше формировать в требуемом формате, а не подставлять визуальное представление ячейки.
Как исправлять ошибки
- Сократите запрос до `select *` и проверьте диапазон.
- Укажите точное число строк заголовка.
- Добавляйте по одной конструкции: `select`, затем `where`, затем агрегирование.
- Проверьте буквы колонок после изменения исходного диапазона.
- Сверьте одинарные кавычки вокруг текста и формат литерала даты.
- Убедитесь, что агрегируемый столбец действительно числовой.
- Проверьте правило: неагрегированные поля из `select` входят в `group by`.
- Сравните контрольную сумму и число строк с независимой сводной.
QUERY может скрыть проблему качества данных, если результат выглядит аккуратно. Всегда сохраняйте контроль: количество исходных строк, число прошедших фильтр, сумму ключевого поля и перечень исключённых значений.
QUERY и данные из другой таблицы
Функцию можно применить к результату IMPORTRANGE. В массиве без буквенных идентификаторов используются `Col1`, `Col2` и далее. Сначала проверьте сам импорт, затем запрос; иначе ошибка доступа и ошибка синтаксиса смешаются.
=QUERY(IMPORTRANGE($B$1; "Продажи!A1:F1000"); "select Col2, sum(Col5) group by Col2"; 1)
Не импортируйте целые столбцы без необходимости. Для крупных и часто меняющихся наборов выгоднее агрегировать данные в источнике и передавать компактный диапазон.
Официальная документация
Синтаксис функции и поведение заголовков сверены 27 июля 2026 года с официальной справкой Google по QUERY. Порядок конструкций, агрегаты, даты и PIVOT проверены по официальному справочнику языка запросов Google Visualization. Интерфейс и доступность функций могут меняться; опирайтесь на справку, а не на расположение команд в чужом скриншоте.
Освойте QUERY, формулы и построение устойчивых отчётов в таблицах.
Курс «Excel + Google Таблицы с нуля до PRO» соединяет формулы, анализ и автоматизацию отчётов. Преподаватель Ренат Шагабутдинов специализируется на Excel и Google Таблицах.
Надёжная QUERY начинается с чистого диапазона, явного заголовка и простого запроса. Добавляйте фильтрацию и агрегирование по одному шагу и каждый итог сверяйте независимо.
Вопросы и ответы
- Почему QUERY не видит часть чисел в столбце?
Вероятно, в колонке смешаны числа и текст. Google определяет преобладающий тип, а значения другого типа может считать пустыми. Приведите источник к одному типу.
- Можно ли писать названия заголовков вместо A, B и C?
Нет, в обычном диапазоне запрос использует идентификаторы колонок — буквы. Видимые заголовки являются подписями результата, а не именами полей языка запроса.
- Чем PIVOT отличается от GROUP BY?
GROUP BY создаёт строки по уникальным комбинациям, а PIVOT превращает уникальные значения выбранного поля в новые колонки и выполняет агрегирование.
- Как указать дату внутри QUERY?
Используйте литерал вида date '2026-07-01' и убедитесь, что исходный столбец содержит настоящие даты. Текст, похожий на дату, сначала нужно преобразовать.
- Почему формула из примера использует другой разделитель?
Разделитель аргументов зависит от локали файла: это может быть точка с запятой или запятая. При этом синтаксис текста запроса и запятые между выбранными колонками не меняются.
