Подсчет различных значений в столбце

# #sql #google-bigquery

Вопрос:

Есть идеи, как я могу подсчитать уникальные значения в столбце, когда значения разделяются запятой (когда имеется более одного значения)?

Например:

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

Ожидаемый результат:

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

Я использую BigQuery.

Спасибо!

Ответ №1:

Попробуйте РАЗДЕЛИТЬ с последующим UNNEST (значение NULLIF требуется для пропуска пустых значений во время подсчета):

 with mytable as (
    select 1 as id, '11' as values union all
    select 2, '11,22' union all 
    select 3, '' union all
    select 4, '11,22,22,33' union all
    select 5, '44,55,66,77' union all
    select 6, '77,88,99'
)
select id, 
       (select count(distinct NULLIF(v,'')) 
        from unnest(split(values)) as v) as values
from mytable
 

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