【问题标题】:SQL display MAX value not displaying correctlySQL 显示 MAX 值未正确显示
【发布时间】:2017-10-12 20:28:42
【问题描述】:

我需要显示我的表格中性别为女性的患者的最高身高、名字和姓氏。问题是它没有显示最高高度。它显示所有女性。我做错了什么?

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

编辑: 我正在添加解决方案,以防有人发现并想了解更多。这是我刚学习 SQL 时没有人可以问的,所以我把它贴在这里。我要感谢用户 Jon Ekiz 简要解释和解决问题的更好方法。他下面的解决方案正是我需要更好地理解 SQL

【问题讨论】:

  • 那么,您想要最高患者的身高吗?即您希望返回一条记录?
  • 你的问题有点含糊。你想找到最高的女性患者并打印她的身高、名字和姓氏,我说得对吗?
  • 迈克·帕克希尔,你是对的。抱歉不准确
  • 嗨。请编辑您的问题以回应 cmets,而不是在 cmets 中澄清。问题/答案应该是独立的。

标签: sql select max


【解决方案1】:

您不能按名字和姓氏分组并期望只得到一个结果。改用这个:

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

更好的解决方案是使用 row_number 并获得第一个结果,但不确定您使用的是哪个 dbms。

【讨论】:

  • 如果有多个身高最高的女性,这将返回多条记录。
【解决方案2】:

您的问题不够清楚,但以下查询应返回您要查找的内容。问题:如果多个女性的身高相同并且最高怎么办?

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

【讨论】:

  • 谢谢,为了更清楚,我只需要显示最高的记录。如果有多个,则它们也必须显示。很抱歉我的问题不清楚。
  • 在这种情况下,Jon Ekiz 已经为您提供了答案。祝你好运。
【解决方案3】:

这样可以吗?

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

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多