Функция запроса Google Sheet — Агрегация (нежелательная) Сортировка

#sql #google-sheets

Вопрос:

Я пытаюсь выполнить то, что начиналось как простая задача, но оказалось сложнее.

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

Первоначальный запрос таков:

 =query(A1:B350,"select A, sum(B) group by A")
 

Смотрите пример:
нажмите здесь, чтобы посмотреть пример

Впоследствии я попытался с:

 =query(A1:B350,"select A, sum(B) where A matches '"amp;join("|", query(G2:G, "select G where G is not null"))amp; "' group by A")
 

вот так:
нажмите здесь, чтобы посмотреть пример

но нежелательная сортировка остается.

Есть идеи о том, как принудительно выполнить начальную сортировку или предотвратить ее изменение? Заранее спасибо

Комментарии:

1. поделитесь копией своего листа

Ответ №1:

Для правильной сортировки необходимо выровнять отдельные цифры. Вы можете сделать это либо в исходных данных, либо с помощью формулы:

 =QUERY({INDEX(REGEXREPLACE(A:A,"-(d)$","-0$1")),B:B},"SELECT Col1, SUM(Col2) GROUP BY Col1")
 

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

Ответ №2:

пробовать:

 =INDEX(IFNA(VLOOKUP(G2:G, 
 QUERY(A1:B350, "select A,sum(B) group by A label sum(B)''"), {1, 2}, 0)))
 

Комментарии:

1. Привет, кажется, это не работает. Он выводит только с 2021-13 и далее — с 2021-3 по 2021-12 не распечатывается, и там есть пустые ячейки.

2. @Lore456 не могли бы вы поделиться копией своего листа?