我正在尝试进行一个SQL查询,该查询将从一列及其相应的ID中返回最大的数字。有关详细信息,我有两个列ID和NUMBER。它们都有2个条目,我希望获得ID旁边的最大数字。这是我尝试过的,但没有成功。
SELECT ID, MAX(NUMBER) AS MAXNUMB
FROM TABLE1
GROUP BY ID, MAXNUMB;
我遇到的问题是,它只显示所有条目,如果我添加一个“where”表达式,它只显示相同的(所有条目[id +numbers])。
Pd.:是的,我得到了我想要的,但只有一列(数字),如果我添加另一列(ID)来选择它“brokes”。
3条答案
按热度按时间qvtsj1bj1#
试试看:
假设您想要具有最大编号的行的ID *(而不是 each ID的最大编号--例如,如果ID在表中不是唯一的)。
fcipmucu2#
你可以试试这个
1hdlvixo3#
您发布的查询包含非法列名(
number
),并且按最大值的别名分组,这是非法的,也没有意义;并且您也不能将无别名的max()
包含在group-by中。因此,您实际上很可能正在执行以下操作:这将为每个ID给予一行,每个ID的最大值为
numb
(这是我为数字列创建的新名称)。或者,正如您所说,您将得到“所有条目”,您可能会得到group by id, numb
,这将显示表中的所有行(除非存在重复组合)。要获得最大值
numb
和对应的id
,可以只返回group by id
,按maxnumb
降序排序,然后只返回第一行:如果有两个ID具有相同的
maxnumb
,那么您将只得到其中一个-并且除非您修改order by
,否则哪个ID是不确定的-但是在这种情况下,您可能更喜欢使用first 1 row with ties
来查看所有ID。您可以使用子查询和分析函数来生成排名,并让外部查询返回排名最高的行,从而实现同样的效果:
型
您也可以使用
keep
来获得与first 1 row only
相同的结果:fiddle