Функции запросов листов Google: как сделать арифметику для столбцов с неконстантными, то есть делить не на константу, а на другую ячейку? - PullRequest
0 голосов
/ 09 февраля 2019

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

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

=QUERY(FebMarket,"SELECT (C/5)") // Это делит столбец C на 5

=QUERY(FebMarket,"SELECT AVG(C)") // Это дает мне среднее значение столбца C

=QUERY(FebMarket,"SELECT AVG(C) LABEL AVG(C) ''") // среднее значение col C без заголовка

Однако, если я выполню одно из следующих действий, я получу сообщение об ошибке:

=QUERY(FebMarket,"SELECT C/(AVG(C) LABEL AVG(C) '')")

=QUERY(FebMarket,"SELECT C/(AVG(C))")

=QUERY(FebMarket,"SELECT C/AVG(C)")

=QUERY(FebMarket,"SELECT C/avgC") // где 'avgC' - это именованный диапазон, указанный для ячейки, где я отдельно вычислил среднее значение для столбца C

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019
=QUERY(QUERY(C1:C,
 "select C / "&AVERAGE(C1:C), 0), 
 "select Col1 
  where Col1 is not null
  label Col1 '' ", 0)

0 голосов
/ 09 февраля 2019

Насколько я знаю, вы получаете одинаковый результат на всех диалектах SQL.Вы можете сделать одну из двух вещей в одном запросе:

Get the result of an aggregate (like AVGE) over the entire dataset

например,

=QUERY(FebMarket,"SELECT AVG(C)") 

, в этом случае вы можете выбрать только агрегаты в запросе

или

Get an aggregate for each one of a set of groups defined by one or more grouping variables.

например,

=QUERY(FebMarket,"SELECT GroupVariable,AVG(C) group by groupVariable") 

, в этом случае вы можете выбрать группирование переменных и агрегатов в запросе.

Ни одна из этих справок.

Есливы гуглите что-то вроде «столбец деления SQL по его среднему значению», вы, вероятно, получите ответ, используя подзапрос, но на момент написания они не были доступны в Google Sheets.

Так (хотя вы могли бы сделать это короче другимиозначает, что решение с использованием запросов должно быть

=ArrayFormula(query(A:A,"select A where A is not null")/query(A:A,"select avg(A) label avg(A) ''"))
...