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

SQL左外连接查询中使用DENSE_RANK()计算两个维度排名的实现问题

你可以直接在关联查询的SELECT子句中加入两个窗口函数计算逻辑,即可一步得到你需要的结果,无需分多次查询:

SELECT 
    b.*,
    c.releasedate,
    DENSE_RANK() OVER(ORDER BY b.sprintenddate DESC) AS `rank_sprint`,
    DENSE_RANK() OVER(ORDER BY c.releasedate DESC) AS `rank_release`
FROM digitalpfatforms.issues_braze b
LEFT JOIN jira.releases c
ON b.version_id = c.versionid;

补充说明

  • 窗口函数的计算逻辑是在表关联、WHERE过滤等前置操作执行完成后才运行,所以上述写法的结果和你先做关联、再基于关联结果算排名的效果完全一致
  • 字段别名的引用符号可以根据你使用的数据库调整:MySQL类数据库用反引号`,PostgreSQL、Hive、Snowflake等数据库可以用双引号"
  • 如果你后续需要基于排名做过滤(比如只取最近3个迭代的结果),可以把上述查询封装为子查询或CTE再做筛选,示例如下:
WITH base_data AS (
    SELECT 
        b.*,
        c.releasedate,
        DENSE_RANK() OVER(ORDER BY b.sprintenddate DESC) AS `rank_sprint`,
        DENSE_RANK() OVER(ORDER BY c.releasedate DESC) AS `rank_release`
    FROM digitalpfatforms.issues_braze b
    LEFT JOIN jira.releases c
    ON b.version_id = c.versionid
)
SELECT * FROM base_data WHERE rank_sprint <= 3;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:06