【发布时间】:2019-02-05 19:19:04
【问题描述】:
我有一个包含两列的表:id 和 score。我想创建第三列,它等于个人score 所在的分位数。我想在 BigQuery 的标准 SQL 中执行此操作。
这里是my_table:
+----+--------+
| id | score |
+----+--------+
| 1 | 2 |
| 2 | 13 |
| 3 | -2 |
| 4 | 7 |
+----+--------+
然后我想要下表(以四分位数显示的示例,但我对四分位数/五分位数/十分位数感兴趣)
+----+--------+----------+
| id | score | quaRtile |
+----+--------+----------+
| 1 | 2 | 2 |
| 2 | 13 | 4 |
| 3 | -2 | 1 |
| 4 | 7 | 3 |
+----+--------+----------+
如果这适用于 1 亿行,那就太好了。我环顾四周,看到一些似乎使用legacy sql 的解决方案,而solutions using RANK() 函数似乎不适用于非常大的数据集。谢谢!
【问题讨论】:
-
你如何定义“分位数”?
-
感谢您的评论@GordonLinoff。这个玩具示例使用四分位数,但我对五分位数或十分位数的兴趣与四分位数一样多。我添加了一些语言来解释。
-
您想要添加列并更新它的解决方案吗?
标签: sql google-bigquery bigquery-standard-sql