2017-10-12 18 views
-1

Je dois afficher la taille, le prénom et le nom de famille les plus élevés d'un patient de ma table où le sexe est féminin. Le problème est qu'il n'affiche pas la hauteur la plus élevée. Il montre toutes les femelles. Qu'est-ce que je fais mal?Affichage SQL La valeur MAX ne s'affiche pas correctement

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

Alors, vous voulez la taille du patient le plus grand? c'est-à-dire que vous attendez un seul enregistrement à retourner? –

+0

Votre question est un peu ambiguë. Ai-je raison de vouloir trouver la plus grande patiente et d'écrire sa taille, son prénom et son nom de famille? – user1675642

+0

Mike Parkhill, vous avez raison. Désolé de ne pas être précis –

Répondre

4

Vous ne pouvez pas regrouper par nom et prénom et ne vous attendez qu'à un seul résultat. Utilisez ceci:

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

meilleure solution est d'utiliser row_number et obtenir le premier résultat, mais pas sûr DBMS que vous utilisez.

+0

Cela retournerait plusieurs enregistrements s'il y a plusieurs femelles avec la plus grande taille. – NonProgrammer

2

Votre question n'est pas assez claire, mais la requête suivante devrait renvoyer ce que vous cherchez. Question: Et si plusieurs femelles ont la même taille et sont les plus grandes?

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

Merci et pour être plus clair, je n'ai besoin que des records qui sont les plus grands à montrer. S'il y a des multiples, ils doivent aussi montrer. Je suis désolé de ne pas être clair dans ma question. –

+1

Dans ce cas, Jon Ekiz vous a déjà couvert en réponse. Bonne chance. – NonProgrammer

1

Est-ce que c'est le cas?

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