sql - 如何编写一个 BigQuery 查询来生成唯一事务的计数和填充的列名组合
问题描述
我正在尝试在 BigQuery 中编写一个查询,以生成唯一事务的计数和填充的列名组合。
我有一张桌子:
转码 | 全名 | 给定的名称 | 姓 | 出生日期 | 电话 |
---|
我追求的结果集是:
转码 | 独特的交易 | 填充列的名称 |
---|---|---|
一种 | 3 | 全名 |
一种 | 4 | 全名,电话 |
乙 | 5 | 名字,姓氏 |
乙 | 10 | 名字、姓氏、出生日期、电话 |
结果集显示,对于 TRAN CODE A
3 个不同的客户提供了全名
4 个不同的客户提供了全名和电话号码
对于 TRAN CODE B
提供了 5 个不同的客户 名字和姓氏
提供了 10 个不同的客户 名字、姓氏、出生日期、电话号码
目前为了产生我的结果,我正在手动进行。
我尝试使用 ARRAY_AGG 但无法正常工作。
任何建议工作将不胜感激。
谢谢你。
解决方案
我想你想要这样的东西:
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
推荐阅读
- c - 如何确保所有 malloc 的内存已被释放?
- salesforce-marketing-cloud - 如何通过 FuelSDK-CSharp 触发旅程交互事件?
- python - 给列赋值如何避免警告
- angular - 如果选中复选框,则角度禁用输入
- python - 异质性度量 - Python 中的元分析
- python - lstm中的训练和验证损失和准确性
- javascript - 使用 for-of 分配给数组的元素
- java - 必须按两次 Enter 键才能显示 Java 输出。(使用 .nextLine())
- hybris - Hybris 参考编辑器 - 使用目录版本过滤
- entity-framework-core - ToQuery 是否只适合测试?