知道如何在 BigQuery SQL 中计算运行总数吗?
id value running total
-- ----- -------------
1 1 1
2 2 3
3 4 7
4 7 14
5 9 23
6 12 35
7 13 48
8 16 64
9 22 86
10 42 128
11 57 185
12 58 243
13 59 302
14 60 362
对于使用相关标量查询的传统 SQL 服务器来说,这不是问题:
SELECT a.id, a.value, (SELECT SUM(b.value)
FROM RunTotalTestData b
WHERE b.id <= a.id)
FROM RunTotalTestData a
ORDER BY a.id;
或加入:
SELECT a.id, a.value, SUM(b.Value)
FROM RunTotalTestData a,
RunTotalTestData b
WHERE b.id <= a.id
GROUP BY a.id, a.value
ORDER BY a.id;
但我找不到让它在 BigQuery 中工作的方法......
最佳答案
2018 更新:原始问题中的查询现在无需修改即可使用。
#standardSQL
WITH RunTotalTestData AS (
SELECT * FROM UNNEST([STRUCT(1 AS id, 1 AS value),(2,0),(3,1),(4,1),(5,2),(6,3)])
)
SELECT a.id, a.value, (SELECT SUM(b.value)
FROM RunTotalTestData b
WHERE b.id <= a.id) runningTotal
FROM RunTotalTestData a
ORDER BY a.id;
2013 更新:您可以使用 SUM() OVER() 来计算运行总计。
在你的例子中:
SELECT id, value, SUM(value) OVER(ORDER BY id)
FROM [your.table]
一个工作示例:
SELECT word, word_count, SUM(word_count) OVER(ORDER BY word)
FROM [publicdata:samples.shakespeare]
WHERE corpus = 'hamlet'
AND word > 'a' LIMIT 30;
关于google-bigquery - BigQuery SQL 运行总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664578/