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

SQL查询如何在所有返回行中同时返回dense_rank()及其最大值

实现方法

你可以通过窗口聚合的方式直接把dense_rank()的最大值追加到所有返回行,主流SQL引擎(PostgreSQL、SQL Server、BigQuery、Spark SQL等)支持直接嵌套窗口函数,不需要额外嵌套子查询:

select 
  dense_rank() over(order by A.claim_id) as "Claim Count",
  max(dense_rank() over(order by A.claim_id)) over () as "Max Claim Count",
  A.person_cpr as "Unique member ID" 
from my_table as A

注意事项

  • 追加列的over ()代表窗口范围覆盖全部返回行,会自动计算所有行里dense_rank()结果的最大值,填充到每一行对应位置。
  • 如果你使用的SQL引擎不支持窗口函数直接嵌套(比如部分低版本MySQL),可以用CTE先完成排名计算,再做窗口聚合:
with ranked_data as (
  select 
    dense_rank() over(order by A.claim_id) as "Claim Count",
    A.person_cpr as "Unique member ID"
  from my_table as A
)
select 
  *,
  max("Claim Count") over () as "Max Claim Count"
from ranked_data
  • 如果你需要按成员维度统计对应claim总数,只需要在max()的over()子句中添加partition by person_cpr即可,按需调整窗口分区范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:33:13