我对SQL和Google BigQuery非常陌生,所以如果这是一个非常愚蠢的问题,请原谅我。我有一个表,其中一个字符串列名为" status“,并且有不同类型的条目--打开、单击、发送等等。我希望将状态被”单击“的次数除以状态被”打开“的次数。我试着做这样的事:
从campaign
中选择COUNT(campaign
),其中properties.status =“单击”/从campaign
选择计数( properties.status ),其中properties.status=“打开”
发布于 2021-02-16 02:39:54
使用case
表达式进行条件聚合。
SELECT SUM(case when properties.status = "clicked" then 1 else 0 end) /
SUM(case when properties.status = "opened" then 1 else 0 end)
FROM campaign
发布于 2021-02-16 03:55:29
在BigQuery中,您可以使用COUNTIF()
SELECT COUNTIF(properties.status = 'clicked') / COUNTIF(properties.status = 'opened')
FROM campaign c;
如果要处理除以零(因此它返回NULL
而不是错误),请使用NULLIF()
或SAFE_DIVIDE()
。
SELECT COUNTIF(properties.status = 'clicked') / NULLIF(COUNTIF(properties.status = 'opened'), 0)
FROM campaign c;
或者:
SELECT SAFE_DIVIDE(COUNTIF(properties.status = 'clicked'),
COUNTIF(properties.status = 'opened')
)
FROM campaign c;
https://stackoverflow.com/questions/66222625
复制