sql вырезать имя столбца после другого случая, когда и группировать по условиям - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть column1 с разными значениями (a, b, c). Мне нужно посчитать каждое значение в этом столбце на основе значений column2 (1,2) и column3 (true, false).

В конце мне нужно иметь выходной столбец, имя которого, если имя различных комбинаций (numberof_a_and_1_and_true, numberof_a_and_1_and_false, numberof_a_and_2_and_true, numberof_b_and_2_and_true и т. Д.

* 1003, как я могу c* 1003 Я думал об использовании countif, но это слишком долго.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

В BigQuery вы будете использовать countif():

select name,
       countif(col1 = 'a' and col2 = 1 and col3) as a_1_true,
       countif(col1 = 'a' and col2 = 1 and not col3) as a_1_false,
       countif(col1 = 'a' and col2 = 2 and col3) as a_2_true,
       countif(col1 = 'a' and col2 = 2 and not col3) as a_2_false,
       countif(col1 = 'b' and col2 = 1 and col3) as b_1_true,
       countif(col1 = 'b' and col2 = 1 and not col3) as b_1_false,
       countif(col1 = 'b' and col2 = 2 and col3) as a_b_true,
       countif(col1 = 'b' and col2 = 2 and not col3) as b_2_false,
       countif(col1 = 'c' and col2 = 1 and col3) as c_1_true,
       countif(col1 = 'c' and col2 = 1 and not col3) as c_1_false,
       countif(col1 = 'c' and col2 = 2 and col3) as c_2_true,
       countif(col1 = 'c' and col2 = 2 and not col3) as c_2_false
from t
group by name;
0 голосов
/ 13 апреля 2020

Вот способ сделать это ...

select column1
       ,count(case when column1='a' and column2=1 and column3=true then 1 end) 
       ,count(case when column1='a' and column2=2 and column3=true then 1 end) 
       ,count(case when column1='a' and column2=1 and column3=false then 1 end) 
       ,count(case when column1='a' and column2=2 and column3=false then 1 end)
       --Add similar conditions for column1=b and c
  from table 
group by column1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...