Вывести нормализованный столбец с вычисляемым полем в QUERY - PullRequest
0 голосов
/ 31 августа 2018

В Google Spreadsheet у меня есть выражение:

=QUERY(database; "select b,c, where a='anyone-condition' order by c desc";-1)

Столбец a, b - это строки, а c - это число.
Как включить в этот запрос одно вычисляемое поле, c/sum(c)?

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

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

У меня есть простой пример, который покажет вам путь

Данные

enter image description here

Решение 1 - проще, но с уродливым именем столбца

 =QUERY(
  A1:C3,"select A,B,C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&"" ,1
 )

enter image description here

Решение 1.1 - более сложное, но с настраиваемым именем столбца

=QUERY(
 A1:C3,"select A,B,C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&
 " label C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&
 " 'C/sum'",1
)

enter image description here

Финалы:

Вы можете пойти дальше и добавить форматирование к последнему столбцу

Ссылка на рабочую копию

Для вашего конкретного примера код должен быть таким:

=query(database; "select b,"&query(query(database; "select sum(c), where a='anyone-condition' "),"select * offset 1",0)&" where a='anyone-condition' order by c desc";-1)

Но, это должно быть проверено на реальных данных

Это служит вашим потребностям?

0 голосов
/ 05 сентября 2018

Проблема с «ядром» таблицы Google, а не с моим кодированием. Смотри крик, который я напечатал

https://drive.google.com/file/d/1yJbcfVZ1tDmW8WoG224PALRIwyEbX9LH/view?usp=sharing

0 голосов
/ 01 сентября 2018

Вы не можете сделать сумму без группы, которую вы не хотите. Вы можете добавить столбец D на свой лист для суммирования. Попробуйте = сумма ($ C $ 2: $ C) в D и скопируйте вниз. Тогда это будет работать:

=query(database, "select B,C/D where A='anyone-condition' order by C desc label C/D ''",-1)
...