Requete de Statistique

Résolu
cs_dimah77 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 22 juin 2009 - 19 avril 2009 à 22:35
cs_dimah77 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 22 juin 2009 - 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

2 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
20 avril 2009 à 16:58
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
3
cs_dimah77 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 22 juin 2009
20 avril 2009 à 18:15
Merci aieeeuuuuu , je v tester et repondre des que ca marche
0
Rejoignez-nous