sql - 如何编写查询来引用两个键和两个值?
问题描述
我正在尝试在 Google BigQuery 中编写一个查询,该查询会提取两个键和两个值。查询应该是:从一个表中计算不同的伪用户 ID,其中 event_params.key = 结果和 event_params.key = 确认号(并且不为空),并且 event_params.value.string_value = 成功。这已经被取消嵌套。我是 SQL 的超级新手,所以请忽略任何答案。
SELECT
*
FROM
`table_name`,
UNNEST(event_params) AS params
WHERE
(stream_id = '1168190076'
OR stream_id = '1168201031')
AND params.key = 'result'
AND params.value.string_value IN ('success',
'SUCCESS')
AND params.key = 'confirmationNumber' NOT NULL
我不断收到错误,当我没有收到错误时,我的数字会大幅下降!我不确定下一步该去哪里。
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT *
FROM `project.dataset.table`
WHERE stream_id IN ('1168190076', '1168201031')
AND 2 = (
SELECT COUNT(1)
FROM UNNEST(event_params) param
WHERE (
param.key = 'result' AND
LOWER(param.value.string_value) = 'success'
) OR (
param.key = 'confirmationNumber' AND
NOT param.value.string_value IS NULL
)
)
推荐阅读
- git - 如何在 Visual Studio git 中获取所有分支和标签
- python - 如何迭代奇数索引并将它们添加回原始列表
- python - 数字海洋中的 Django
- amazon-s3 - CloudFront 未正确从 S3 传回 Access-Control-Allow-Origin 标头
- javascript - 在 JavaScript 中为 eventListener 访问数组元素
- javascript - 使用正则表达式替换子字符串但保留空格
- java - Mapstruct 实现不生成复制命令
- python - 如何提取包含特殊字符的字符串的一部分(数字)
- python - 在图像中找到颜色范围分布的更快方法?
- c# - 从 LINQ 查询中创建简短列表