【发布时间】:2017-11-24 14:46:14
【问题描述】:
我见过this question,这几乎正是我想要的。但我无法使用标准 SQL 在 Bigquery 上运行它,因为 BQ 不允许用户定义的变量。
注意 - 我有任意数量的组,因此根据链接问题中的第一个答案UNION所有这些组是不可行的。
以下是最简单的示例,尽管有任何解决方案 应该能够扩展到需要多少 n 个顶级结果:
给定如下表,其中包含人员、组和年龄列, 你如何找到每组中最年长的 2 个人? (内的关系 组不应产生更多结果,但应给出任何结果中的前 2 个 顺序)
+--------+-------+-----+
| Person | Group | Age |
+--------+-------+-----+
| Bob | 1 | 32 |
| Jill | 1 | 34 |
| Shawn | 1 | 42 |
| Jake | 2 | 29 |
| Paul | 2 | 36 |
| Laura | 2 | 39 |
+--------+-------+-----+
想要的结果集:
+--------+-------+-----+
| Shawn | 1 | 42 |
| Jill | 1 | 34 |
| Laura | 2 | 39 |
| Paul | 2 | 36 |
+--------+-------+-----+
链接问题中的一个答案提到使用确实存在的ROW_NUMBER,但我不知道如何重新启动每个组的号码。
【问题讨论】:
标签: sql google-bigquery