结合两个 multiple bigquery SELECT FROM 语句
combining two multiple bigquery SELECT FROM statements
我对 BigQuery 和 SQL 有点陌生,所以我遇到的部分困难可能是我不知道如何描述我遇到的问题寻找答案,但我已经看了所以请温柔。
我想做的是计算满足一组条件的唯一用户 ID 的总数,并将其除以唯一用户 ID 的总数。
例如统计所有购买过的唯一身份用户:
SELECT count(userId)
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
WHERE event_value > 0 and event_parameters.Name = "SKU"
GROUP BY userId ORDER BY userId)
并统计独立用户总数
SELECT count(userId)
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
GROUP BY userId ORDER BY userId)
我尝试将查询写成
SELECT buyers/total
FROM (SELECT COUNT(userId) AS buyers
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
WHERE event_value > 0 and event_parameters.Name = "SKU"
GROUP BY userId ORDER BY userId),
COUNT(userId) as total
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
GROUP BY userId ORDER BY userId))
但是没用。我知道我做的事情从根本上是错误的,但我不确定它是什么。如果有任何帮助,我将不胜感激。
您可以像这样计算不同的用户:
SELECT
EXACT_COUNT_DISTINCT(userId) as buyers
FROM (FLATTEN([table1], user_attribute))
WHERE
event_value > 0
AND event_parameters.Name = "SKU"
加入它们的一种方法是添加静态标量值并将其用于加入:
SELECT
buyers/total
FROM (
SELECT
EXACT_COUNT_DISTINCT(userId) AS buyers,
1 AS scalar,
FROM (FLATTEN([table1], user_attribute))
WHERE
event_value > 0
AND event_parameters.Name = "SKU") a
JOIN (
SELECT
COUNT(userId) AS total,
1 AS scalar,
FROM (FLATTEN([table1], user_attribute)) ) b
ON
a.scalar=b.scalar
我对 BigQuery 和 SQL 有点陌生,所以我遇到的部分困难可能是我不知道如何描述我遇到的问题寻找答案,但我已经看了所以请温柔。
我想做的是计算满足一组条件的唯一用户 ID 的总数,并将其除以唯一用户 ID 的总数。
例如统计所有购买过的唯一身份用户:
SELECT count(userId)
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
WHERE event_value > 0 and event_parameters.Name = "SKU"
GROUP BY userId ORDER BY userId)
并统计独立用户总数
SELECT count(userId)
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
GROUP BY userId ORDER BY userId)
我尝试将查询写成
SELECT buyers/total
FROM (SELECT COUNT(userId) AS buyers
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
WHERE event_value > 0 and event_parameters.Name = "SKU"
GROUP BY userId ORDER BY userId),
COUNT(userId) as total
FROM (SELECT userId
FROM (FLATTEN([table1], user_attribute))
GROUP BY userId ORDER BY userId))
但是没用。我知道我做的事情从根本上是错误的,但我不确定它是什么。如果有任何帮助,我将不胜感激。
您可以像这样计算不同的用户:
SELECT
EXACT_COUNT_DISTINCT(userId) as buyers
FROM (FLATTEN([table1], user_attribute))
WHERE
event_value > 0
AND event_parameters.Name = "SKU"
加入它们的一种方法是添加静态标量值并将其用于加入:
SELECT
buyers/total
FROM (
SELECT
EXACT_COUNT_DISTINCT(userId) AS buyers,
1 AS scalar,
FROM (FLATTEN([table1], user_attribute))
WHERE
event_value > 0
AND event_parameters.Name = "SKU") a
JOIN (
SELECT
COUNT(userId) AS total,
1 AS scalar,
FROM (FLATTEN([table1], user_attribute)) ) b
ON
a.scalar=b.scalar