SQL显示最大值显示不正确

问题描述:

我需要显示我的表中患者性别为女性的最高身高,姓氏和姓氏。问题是它没有显示最高的高度。它显示所有女性。我究竟做错了什么?SQL显示最大值显示不正确

SELECT MAX(PatientHeight) as PatientHeight, FirstName, LastName 
FROM Patients 
WHERE Gender = 'F' 
GROUP BY FirstName, LastName 
+0

那么,你想要最高患者的身高吗?即您希望返回单个记录? –

+0

你的问题有点模棱两可。我是对的,你想找到最高的女病人,并打印她的身高,名字和姓氏? – user1675642

+0

麦克帕克希尔,你是对的。对不起,没有精确 –

您不能按名字和姓氏分组,只能得到一个结果。使用这个来代替:

select firstname 
    , lastname 
    , patientheight 
from patients 
where patientheight = (
      select max(patientheight) max_height 
      from patients 
      where gender = 'F' 
      ) 
and gender = 'F' 

更好的解决方案是使用ROW_NUMBER和得到的第一个结果,但不知道你正在使用的DBMS。

+0

如果有多个女性身高最高,这将返回多条记录。 – NonProgrammer

你的问题还不够清楚,但下面的查询应该返回你正在寻找的东西。问题:如果多个女性拥有相同的身高并且是最高的呢?

SELECT top 1 PatientHeight, FirstName, LastName 
FROM Patients 
WHERE Gender = 'F' 
Order by PatientHeight desc 
+1

谢谢你,并且要更加清楚,我只需要最高显示的记录。如果有倍数,那么它们也必须显示。对于我的问题不清楚,我感到抱歉。 –

+1

在这种情况下,Jon Ekiz已经为你解答了答案。祝你好运。 – NonProgrammer

这样做吗?

SELECT TOP 1 PatientHeight,FirstName,LastName 
FROM Patients 
WHERE Gender = 'F' 
ORDER BY PatientHeight DESC