SQL - 选择最大值,但当平局时,从其他列中选择最大值

问题描述 投票:0回答:1

我有一个包含列

id, cl_id, ratio, diff
的表格,我想选择具有最大
ratio
的观测值,按
cl_id
分组,但如果存在相等的值,则应从相等值中选择最大
diff

下面是

Have
Want
表:

CREATE TABLE Have(
    id INT PRIMARY KEY,
    cl_id CHAR(1),
    ratio DECIMAL(5,4),
    diff INT
);

INSERT INTO Have(id, cl_id, ratio, diff) VALUES 
(122222, 'a', 1.3333, 2),
(123333, 'a', 1.3333, 5),
(124444, 'b', 1.25, 2),
(125555, 'b', 1.6667, 1);


CREATE TABLE Want(
    id INT PRIMARY KEY,
    cl_id CHAR(1),
    ratio DECIMAL(5,4),
    diff INT
);

INSERT INTO Want(id, cl_id, ratio, diff) VALUES 
(123333, 'a', 1.3333, 5),
(125555, 'b', 1.6667, 1);
sql t-sql max ssms
1个回答
0
投票

我们可以在这里使用

ROW_NUMBER()
进行两级排序:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY cl_id ORDER BY ratio DESC, diff DESC) rn
    FROM Have
)

SELECT id, cl_id, ratio, diff
FROM cte
WHERE rn = 1;
© www.soinside.com 2019 - 2024. All rights reserved.