Добавление значений с условием в Google BigQuery - PullRequest
0 голосов
/ 19 февраля 2020

Мне нужно добавить некоторые значения с условием в GoogleBigQuery

ВНИМАНИЕ: я отредактировал оригинальный вопрос, поскольку он был недостаточно точным.

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

Примерно так: results

Вот более подробное определение:

ТАБЛИЦА

Столбцы:

Магазин : Местоположение магазина

марка : бренды автомобилей, продаваемых в магазине

продажи : продажи каждого бренда, продаваемого в каждом магазине ранг : ранг каждой марки в магазине ( наибольший, больший)

total_sales_shop : СУММА всех продаж бренда в магазине

pct : процент продаж по бренду в зависимости от местоположения магазина pct_a cc:

Мне нужно позвонить c: pct_a cc, что - совокупная сумма магазинов по рангу (хотя это не имеет отношения к бренду)

PCT_A CC

Мне нужно достичь чего-то вроде PCT_A CC* 105 3 *, а затем сохраните результаты в другом файле, например: endtable

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

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

select values, rank, 
sum(case when rank<2 then values else 0 end) condition1

from table
group by values, rank

Необходимо добавить / удалить столбцы из выбора и сгруппировать по требованию

Чтобы получить накопленную сумму, вы можете используйте следующий запрос:

select shop, brand, sales, rank, total_sales_shop, pct , 
sum(pct) over (partition by shop order by rank) as pct_act
from data

И чтобы получить финальную таблицу, вы можете использовать комбинацию оператора case и группы по

например

select shop,
max(case when rank=1 then pct_act end) as rank_1,
max(case when rank=2 then pct_act end) as rank_2,
max(case when rank=3 then pct_act end) as rank_3,
max(case when rank=4 then pct_act end) as rank_4,
max(case when rank=5 then pct_act end) as rank_5
from cumulative_sum
group by shop
0 голосов
/ 19 февраля 2020

Если вам нужна только окончательная сумма для строк с этим условием, вы можете попробовать:

SELECT  
   SUM (IF(Rank < 2, Values, 0) AS condition1 
FROM table

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

SELECT  
   Rank,
   SUM (IF(Rank < 2, Values, 0) AS condition1 
FROM table
WHERE
   RANK < 2
GROUP BY  
   Rank

Наконец, если вы хотите получить ранг и сумму, учитывая все строки, которые вы можете попытаться сделать:

SELECT  
   Rank,
   SUM (IF(Rank < 2, Values, 0) AS condition1 
FROM table
GROUP BY  
   Rank

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...