0
votes

Comparer un seul champ avec la moyenne du même champ groupé par un autre champ de SQL

J'essaie de créer une requête qui obtient les noms des personnes qui sont plus grandes de la hauteur moyenne de leur sexe.

Je sais comment obtenir la hauteur moyenne de chaque sexe:

Sélectionnez AVG (Hauteur), Genre du groupe client par sexe

mais je ne sais pas comment comparer chaque personne (basée sur son sexe) avec cette sous-requête ..

Ceci est aussi loin que je pouvais faire: xxx

merci d'avance.


1 commentaires

colonnes , pas champs ...


4 Réponses :


0
votes

Vous pouvez essayer des sous-requêtes, comme ceci:

select *
from client as c inner join
(
    SELECT avg(height) as avgh, gender
    from client
    group by gender
) as t
on c.gender = t.gender and c.height > t.avgh


0 commentaires

0
votes

Vous pouvez rejoindre interne la sous-requête sur le sexe et la hauteur étant plus grande.

SELECT c1.cname
       FROM client c1
            INNER JOIN (SELECT c2.gender,
                               avg(c2.height) height
                               FROM client c2
                               GROUP BY c2.gender) x
                       ON x.gender = c1.gender
                          AND x.height > c1.height;


1 commentaires

Merci, mais cela ne donne pas la bonne sortie. (J'ai les réponses ..)



1
votes

Joindre:

select *
from client
where height >
(
  select avg(height)
  from client all_clients
  where all_clients.gender = client.gender
);


0 commentaires

0
votes
SELECT PplHeight.cname, PplHeight.gender, PplHeight.height
FROM 
  client AS PplHeight,
  (SELECT gender, avg(height) as avg_height from client group by gender) avg_h
WHERE PplHeight.gender = avg_h.gender
  AND PplHeight.height > avg_h.avg_height 

0 commentaires