首页 > 解决方案 > 如何编写一个 BigQuery 查询来生成唯一事务的计数和填充的列名组合

问题描述

我正在尝试在 BigQuery 中编写一个查询,以生成唯一事务的计数和填充的列名组合。

我有一张桌子:

转码 全名 给定的名称 出生日期 电话

我追求的结果集是:

转码 独特的交易 填充列的名称
一种 3 全名
一种 4 全名,电话
5 名字,姓氏
10 名字、姓氏、出生日期、电话

结果集显示,对于 TRAN CODE A

3 个不同的客户提供了全名
4 个不同的客户提供了全名和电话号码

对于 TRAN CODE B
提供了 5 个不同的客户 名字和姓氏
提供了 10 个不同的客户 名字、姓氏、出生日期、电话号码

目前为了产生我的结果,我正在手动进行。

我尝试使用 ARRAY_AGG 但无法正常工作。

任何建议工作将不胜感激。

谢谢你。

标签: sqlgoogle-bigquery

解决方案


你想要这样的东西:

select tran_code,
       array_to_string(array[case when full_name is not null then 'full_name' end,
                             case when given_name is not null then 'given_name' end,
                             case when surname is not null then 'surname' end,
                             case when dob is not null then 'dob' end,
                             case when phone is not null then 'phone' end
                            ], ','),
        count(*)                
from t
group by 1, 2

推荐阅读