如何对一系列数据进行分组以在 GOOGLE BigQuery 中创建一个类别

Posted

技术标签:

【中文标题】如何对一系列数据进行分组以在 GOOGLE BigQuery 中创建一个类别【英文标题】:How to group a range of data to make a category in GOOGLE BigQuery 【发布时间】:2013-11-19 04:55:59 【问题描述】:
   Row |day    |Prob     
--------------------------
    1   5   0.3  
    2   3   0.1 
    3   2   0.6 
    4   4   0.5  
    5   1   0.4  

我想将第 1 天到第 3 天合并到一个类别,将第 4 天到第 5 天合并到另一个类别 怎么做?类别的概率不仅仅是简单地添加每天的概率。 当前代码:

SELECT day, SUM( new ) / SUM( new+ old ) **AS** Prob
FROM mydata
WHERE year > 2005 and ( day >=1 and day <=5)
GROUP by day;

【问题讨论】:

你能在这里给出你对给定数据的预期结果吗? 老实说,我不知道预期的结果应该是什么。比如说,在第 1 天,有 3 个新任务和 2 个旧任务。所以第一天选择一个旧任务的概率是 2/5。第2天:新1旧1,概率1/2;第 3 天:新 2 旧 3,概率 3/5。现在我想形成一个类别来显示从第 1 天到第 2 天选择旧任务的概率。所以我预计它是 (2+1+3)/(5+2+5)。 【参考方案1】:

SEE SQL FIDDLE

从任务中选择“1”作为 CATEGOry,SUM(NEW_Task)/SUM(NEW_TASK+OLD_TASK) 作为 PROB

哪一天 1到3之间

联合

选择 '2' 作为 CATEGOry,SUM(NEW_Task)/SUM(NEW_TASK+OLD_TASK) AS PROB from task

4 点到 5 点之间的日期

根据我从您的问题中了解到的情况,我刚刚尝试了 Query。这是你想要达到的目标还是其他什么

【讨论】:

谢谢拉梅什!这正是我想要的!剩下的唯一问题是“UNION”不适用于 bigquery..我只能获得一个类别... 好的,我知道了。对于任何对如何在 BigQuery 中执行 UNION 感兴趣的人:***.com/questions/10644993/… 也可以使用CASE,见***.com/questions/15464574/…

以上是关于如何对一系列数据进行分组以在 GOOGLE BigQuery 中创建一个类别的主要内容,如果未能解决你的问题,请参考以下文章

分组后只对一列进行排序

Google Big Table与广告服务器数据分析的大查询

如何按键对一组对象进行分组?

如何按键对一组对象进行分组?

如何对一组对象进行分组并将其映射到不同的结构?

Excel:如何像数据透视表一样对一系列带有前导零的数字进行排序?