【发布时间】:2019-02-26 08:06:27
【问题描述】:
我有多个地点的每日收入数据。这是一个例子:
+---------+------------+----------+------------+
| ID | location | value | timestamp |
+---------+------------+----------+------------+
| 1 | LA | 15.000 | 2019-02-12 |
| 2 | SF | 23.000 | 2019-02-10 |
| 3 | NYC | 9.000 | 2019-02-10 |
| 4 | LA | 2.500 | 2019-02-09 |
+---------+------------+----------+------------+
我想找到前三个热门地点。输出应该是这样的:
+----------+------------+----------+----------------+
| rank | location | growth | growth_percent |
+----------+------------+----------+----------------+
| 1 | SF | 23.000 | 0.75 |
| 2 | LA | 17.500 | 0.62 |
| 3 | NYC | 9.000 | 0.43 |
+----------+------------+----------+----------------+
我认为使用RANK() 函数可以解决这个问题。我开始了:
SELECT location,
RANK() OVER (PARTITION BY location ORDER BY timestamp) as rank
FROM `revenues`
GROUP BY location, timestamp
但这会多次返回一个位置。关于如何创建这样的趋势查询有什么想法吗?
【问题讨论】:
标签: google-bigquery