Requete de Statistique [Résolu]

cs_dimah77 7 Messages postés mardi 8 mai 2007Date d'inscription 22 juin 2009 Dernière intervention - 19 avril 2009 à 22:35 - Dernière réponse : cs_dimah77 7 Messages postés mardi 8 mai 2007Date d'inscription 22 juin 2009 Dernière intervention
- 20 avril 2009 à 18:15
Bonjour,
Je me casse la tete depuis plusieurs jours sur une requete, etant debutant en SQL.
Voila : j'ai une 2 table avec les champs suivant : table ADHERANT : Matricule,Nom_AD,ID_Activité,Sexe
table SPORT : ID_Activité, Nom_ACT
je travaille sur une requete qui me produira le tableau suivant
ID_ACT | Nom_ACT | NbrFilles | NbrGarçons | NbrTotal

j'ai reussi a trouver cette requette :
select distinct(ID_ACtivite), Nom_ACT, sexe, count(ID_Activite) as Nombre
from ADHERANT, SPORT
where SPORT.id_Activite = ADHERANT.ID_Activite
group by id_activite,Nom_ACT,sexe
order by ID_Activite, sexe
mais elle me donne deux ligne distincte pour chaque sport ...
ce que je voudrai c'est avoir une seule ligne detaillée par Sport selon le schema donné ..
Merci
Afficher la suite 

Votre réponse

2 réponses

aieeeuuuuu 698 Messages postés jeudi 16 janvier 2003Date d'inscription 20 mai 2011 Dernière intervention - 20 avril 2009 à 16:58
+3
Utile
Bonjour

voici la requete (les noms des champs ne sont peut etre pas les bons, j'ai testé chez moi avec d'autres noms)
il y a peut etre plus simple, mais franchement je ne vois pas

SELECT idactivite, nom_activite, sum(sexeM) as nbrGarcons, sum(sexeF) as nbrFilles, sum(sexeM) + sum(sexeF) as total
from
(    select  s.idactivite as idactivite, s.nom_activite as nom_activite, count(*) as sexeM, 0 as sexeF
    from sport s
    left outer join adherent A1 on (s.idactivite = a1.idactivite)
    WHERE A1.sexe = 'M'
    group by s.idactivite, s.nom_activite
Union
    select s.idactivite as idactivite, s.nom_activite as nom_activite, 0 as sexeM, count(*) as sexeF
    from sport s
    left outer join adherent A1 on (s.idactivite = a1.idactivite)
    WHERE A1.sexe = 'F'
    group by s.idactivite, s.nom_activite
union
    SELECT s.idactivite as idactivite, s.nom_activite as nom_activite, 0 as sexeM, 0 as sexeF
    from sport s
    where s.idactivite not in (select idactivite from adherent)) as tbl
group by idactivite, nom_activite
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de aieeeuuuuu
cs_dimah77 7 Messages postés mardi 8 mai 2007Date d'inscription 22 juin 2009 Dernière intervention - 20 avril 2009 à 18:15
0
Utile
Merci aieeeuuuuu , je v tester et repondre des que ca marche
Commenter la réponse de cs_dimah77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.