Функция Query и сумма SUM по значению в Гугл таблицах

Функция Query и сумма SUM по значению в Гугл таблицах

16.05.2022 2 Автор pavezlo

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

Если вам такое отслеживание времени покажется странным, почитайте мою статью про это. Я использовал разные методы, но Гугл таблицы оказались самыми удобными.

Пример исходной таблицы данных

На скрине выше я выделил тот интервал, который нужно просуммировать и получить в ячейке Е2. При том условии, что сегодня дата 16.05.2022.

Кажется никакой автоматизации тут не нужно и можно просто выделить нужный интервал и получить значение потраченного на задачи времени, но строк может быть много да и вообще не удобно каждый раз выделять интервал. Хочется посмотреть в одну ячейку и сразу понять ,сколько сегодня времени уже потрачено на задачи.

Функция QUERY и SQL запрос SUM

Посчитать сумму по необходимому значению можно по разному. Например, с помощью функции IF где мы говорим, проверь ячейку А и если там дата TODAY(), сложи с прочими такими же совпадениями. Но получится очень длинная формула и при добавлении новых строк она сломается.

Поэтому я использовал функцию query позволяющую работать с sql запросами.

Формула записана в ячейке Е1.

Функция QUERY и SQL запрос SUM
Функция QUERY и SQL запрос SUM

Приведу формулу тут и разберу её на атомы:

=query(A3:E19;"select sum(E) where A = date'"&TEXT(TODAY();"yyyy-mm-dd")&"'")

Итак, функция вызывается с помощью QUERY. Официальная справка тут. Далее мы указываем интервал с данными — тут всё просто.

Вторым аргументом идёт sql запрос и в нём самое интересное.

Функция Query и сумма по значению в Гугл таблицах
Разбор SQL запроса в функции QUERY

Говоря простым языком, мы говорим выведи сумму потраченного времени из столбца Е только по сегодняшним датам.

Возможные ошибки

Проверяйте, чтобы первый столбец с датам имел формат именно дат, иначе если там будут текстовые значения, то sql запрос упростится и нужно будет просто вывести «А = ‘16.05.2022’ «.