Select 基于列最大值的相同行,当最大值等于时只选择其中一行
Select identical rows based on max values of a column and only choose one of rows when max equals
我有一个名为 'demo' 的 table,具有以下数据:
Name Group MX
A XY 1
B YZ 1
B XY 2
C YZ 5
C XY 3
D YZ 2
E YZ 1
E XY 1
我想要基于 'MX' 最大值的唯一名称,当两个相同名称的 'MX' 相等时,我需要其中之一,如下图所示:
Name Group MX
A XY 1
B XY 2
C YZ 5
D YZ 2
E YZ 1 -- or this {E XY 1}
这是我的查询:
SELECT demo.Name, demo.Group, demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo
ON demo.Name = demo2.Name
AND demo.MX = demo2.max_values
它工作得很好,但是当两个名字相同时,它显示如下:
Name Group MX
A XY 1
B XY 2
C YZ 5
D YZ 2
E YZ 1
E XY 1
你推荐什么方法?
为了避免 Name 和 MX 相等的两个值,您可以使用(假的)聚合函数并按例如:
SELECT demo.Name, min(demo.Group), demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo ON demo.Name = demo2.Name AND demo.MX = demo2.max_values
GROUP BY demo.Name, demo.MX
我有一个名为 'demo' 的 table,具有以下数据:
Name Group MX A XY 1 B YZ 1 B XY 2 C YZ 5 C XY 3 D YZ 2 E YZ 1 E XY 1
我想要基于 'MX' 最大值的唯一名称,当两个相同名称的 'MX' 相等时,我需要其中之一,如下图所示:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 -- or this {E XY 1}
这是我的查询:
SELECT demo.Name, demo.Group, demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo
ON demo.Name = demo2.Name
AND demo.MX = demo2.max_values
它工作得很好,但是当两个名字相同时,它显示如下:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 E XY 1
你推荐什么方法?
为了避免 Name 和 MX 相等的两个值,您可以使用(假的)聚合函数并按例如:
SELECT demo.Name, min(demo.Group), demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo ON demo.Name = demo2.Name AND demo.MX = demo2.max_values
GROUP BY demo.Name, demo.MX