【问题标题】:Spark sql top n per groupSpark sql 每组前 n 个
【发布时间】:2018-02-05 22:19:13
【问题描述】:

如何在spark-sql 中获得每个组的前 n 名(比如说前 10 名或前 3 名)?

http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 提供通用 SQL 教程。但是,spark 并没有在 where 子句中实现子查询。

【问题讨论】:

    标签: apache-spark group-by apache-spark-sql top-n


    【解决方案1】:

    您可以使用 Spark 1.4 中添加的窗口函数功能 假设我们有一个如下所示的 productRevenue 表。

    每个品类最畅销和第二畅销的产品是什么的答案如下

    SELECT product,category,revenue FROM 
       (SELECT product,category,revenue,dense_rank() 
             OVER (PARTITION BY category ORDER BY revenue DESC) as rank 
        FROM productRevenue) tmp 
    WHERE rank <= 2
    

    这会给你想要的结果

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2020-08-25
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多