You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks中实现Oracle的max(column_a) keep语法?

Oracle的MAX() KEEP(DENSE_RANK)在Databricks SQL中的等价写法

原Oracle SQL的作用是:按id分组,在每个分组内先筛选出column_b值最大的所有行,再从这些行中取column_a的最大值。

Databricks SQL没有直接对应Oracle MAX() KEEP(DENSE_RANK...)的语法,但可以通过窗口函数DENSE_RANK()结合子查询实现完全等价的逻辑,代码如下:

SELECT
  id,
  MAX(column_a) AS column_a_max
FROM (
  SELECT
    id,
    column_a,
    column_b,
    -- 按id分组,column_b降序排名,排名1的是column_b最大的行
    DENSE_RANK() OVER (PARTITION BY id ORDER BY column_b DESC) AS rnk
  FROM your_table
) t
WHERE rnk = 1
GROUP BY id;

逻辑说明

  • 子查询中通过DENSE_RANK()窗口函数,给每个id分组内的行按column_b降序分配排名,排名为1的行就是该分组内column_b值最大的所有行。
  • 外层查询过滤出排名为1的行,再按id分组计算column_a的最大值,和原Oracle语句的逻辑完全一致。

内容的提问来源于stack exchange,提问作者John Al

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:52:09