Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用BigQuery中的条件除以计数(字符串)_Sql_Google Bigquery - Fatal编程技术网

Sql 使用BigQuery中的条件除以计数(字符串)

Sql 使用BigQuery中的条件除以计数(字符串),sql,google-bigquery,Sql,Google Bigquery,我对SQL和Google BigQuery还很陌生,所以如果这是一个非常愚蠢的问题,请原谅我。 我有一个表,其中一个字符串列称为“status”,有不同类型的条目-打开、单击、发送等。我想将status被“单击”的事件数除以status被“打开”的事件数。我试着这样做: 挑选 计数(属性.状态) 从…起 活动 哪里 properties.status=“单击” / 挑选 计数(属性.状态) 从…起 活动 哪里 properties.status=“opened”使用case表达式进行条件聚合 在

我对SQL和Google BigQuery还很陌生,所以如果这是一个非常愚蠢的问题,请原谅我。 我有一个表,其中一个字符串列称为“status”,有不同类型的条目-打开、单击、发送等。我想将status被“单击”的事件数除以status被“打开”的事件数。我试着这样做:

挑选 计数(属性.状态) 从…起
活动
哪里 properties.status=“单击” / 挑选 计数(属性.状态) 从…起
活动
哪里 properties.status=“opened”

使用
case
表达式进行条件聚合


在BigQuery中,可以使用
COUNTIF()

如果要处理除以零(因此它返回
NULL
而不是错误),请使用
NULLIF()
SAFE_divide()

或:

从…中选择计数(此)/计数(那个)。。。
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
SELECT COUNTIF(properties.status = 'clicked') / COUNTIF(properties.status = 'opened')
FROM campaign c;
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;