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

新手SQL ORDER BY问题:如何调整查询结果的排序规则

解决SQL排序问题:将单col1关联的col2记录后置

调整后的查询语句

SELECT
    g.col1,
    g.col2, 
    g.col3,
    g.col4,
    SUM(num1) AS sum_num1,
    SUM(num2) AS sum_num2,
    SUM(num3) AS sum_num3
FROM tablename g
WHERE 
    g.col1 IN ('name1','name2')
    AND g.col2 IN ('proc0','proc1','proc2','proc3','proc4','proc5')
    AND g.col4 = '2024-04-30'
GROUP BY 1,2,3,4
ORDER BY 
    -- 先按每个col2对应的唯一col1数量降序,多关联的排前面
    COUNT(DISTINCT col1) OVER (PARTITION BY col2) DESC,
    -- 再按原排序规则
    2, 
    1 DESC;

逻辑说明

  • 窗口函数 COUNT(DISTINCT col1) OVER (PARTITION BY col2) 会计算每个col2对应的不同col1的数量:比如proc1对应name1和name2,数量为2;proc0只对应name1,数量为1。
  • 排序时优先按这个数量降序,就能让对应多个col1的col2记录排在最前面,单个col1关联的记录自动后置。
  • 如果需要把单个col1关联的记录排在最前面,只需将DESC改为ASC即可。

匹配期望输出

调整后的排序逻辑会让proc1、proc2、proc5(对应2个col1)的记录先出现,接着是proc0、proc4(仅对应1个col1)的记录,完全匹配你给出的期望输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:43:10