【发布时间】:2016-05-26 15:32:25
【问题描述】:
我有下表 SQL 表 (SparkSQL)。
user_id, city, timestamp, item_id
我需要在每个给定日期找到给定城市的前 10 个项目(根据 item_id 在该城市出现的次数)。
然后我做了以下事情:
SELECT *
FROM (
SELECT *,
row_number() OVER partition BY city AS rn
FROM mytable) AS foo
ORDER BY rn DESC
但是,尽管它按 rn 排序,但它并不仅仅是给我一个给定日期的前 10 个元素。解决此问题的正确方法是什么?谢谢!
【问题讨论】:
-
of the given city和in each given date表示您必须按城市、日期进行分区(1 个日期可能有超过 1 个时间戳吗?)。Top 10表示您必须order bysomething 才能获得前 10 项。您想订购什么东西? -
假设是交易记录,item_1可能出现1000次,item_2可能出现950次......在给定的城市。我希望它按每个项目出现在该城市的次数排序。 IE。对于每个日期,我想展示每个城市最畅销的 10 件商品。
标签: sql apache-spark