大查询中的行聚合值

时间:2017-11-08 13:01:24

标签: google-bigquery

如何使用big-query获取列C(bigquery表的结构是“id”,“收入”)

列C =每行收入的汇总值

Table

id,收入,C

1,5,5 2,3,8 3,1,9 4,2,11 5,0,11

2 个答案:

答案 0 :(得分:1)

SELECT id, SUM(revenue) AS total_revenue
FROM YourTable
GROUP BY id
ORDER BY id;

如果您还想要所有id值的收入总额,则可以使用GROUP BY ROLLUP。结果为id的行包含所有id的总计:

SELECT id, SUM(revenue) AS total_revenue
FROM YourTable
GROUP BY ROLLUP(id)
ORDER BY id;

编辑:对于累积总和,您可以使用分析函数。在这种情况下,它将是:

SELECT id, SUM(revenue) OVER (ORDER BY id) AS total_revenue
FROM YourTable
ORDER BY id;

答案 1 :(得分:0)

下面是BigQuery Standard SQL

  
#standardSQL
SELECT id, SUM(revenue) OVER(ORDER BY id) AS total_revenue
FROM `project.dataset.yourTable`
ORDER BY id  

您可以使用以下虚拟数据来测试/播放

#standardSQL
WITH `project.dataset.yourTable` AS (
  SELECT 1 id, 5 revenue UNION ALL
  SELECT 2, 3 UNION ALL
  SELECT 3, 1 UNION ALL
  SELECT 4, 2 UNION ALL
  SELECT 5, 0 
)
SELECT id, SUM(revenue) OVER(ORDER BY id) AS total_revenue
FROM `project.dataset.yourTable`
ORDER BY id   

输出

id  total_revenue    
1   5    
2   8    
3   9    
4   11   
5   11