Requête qui renvoit un tableau par tranche d'age

Résolu
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011 - 21 mars 2008 à 09:54
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011 - 25 mars 2008 à 17:57
Bonjour à tous,
J'ai une requête à faire mais je vois pas trop comment m'y prendre ...
Un peu d'aide serait bienvenue !!

Voilà le contexte :

Des usagers appellent un No de téléphone.
ces usagers sont connus et référencés dans une table Usager (par codeUsager). On connait également leur date de naissance (naissanceUsager).
Tous les appels sont référencés dans une table Appels et ont un lien avec la table Usager via le codeUsager.
 Mon souhait est de disposer d'un tableau en sortie qui me donne le Nbr d'appels par tranche d'age (de 0 à 17, de 18 à 59, 60 et +).

C'est certainement pas bien compliqué mais comme je suis loin d'être expert sur sql, je ne vois pas par quel bout le prendre !!

Merci d'avance.

2 réponses

equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011
25 mars 2008 à 17:57
J'ai trouvé !!!!
Ci-joint la requête ... au cas où quelqu'un est intéressé!
Ici, je récupère le Nombre d'usagers hommes (genreusager=1) différents par tranches d'age (de moins de 18, 18 à 44, 45 à 65, 65 et +) .
Merci à Stef60 du forum "comment ça marche" (post de Déc 07) pour la piste ... rendons à césar ...

SELECT a.cnt1
, b.cnt2
, c.cnt3
, d.cnt4
FROM ( SELECT COUNT(DISTINCT usager.codeusager) AS cnt1
FROM usager
INNER JOIN ListeAppel  ON Usager.codeUsager = ListeAppel.codeUsager
                            WHERE      (ListeAppel.dateListeAppel BETWEEN @date AND @datefin) and (year(getdate())-year(Usager.datenaissanceusager)<18 and usager.genreusager=1)
) AS a
, (  SELECT COUNT(DISTINCT usager.codeusager) AS cnt2
FROM usager
INNER JOIN ListeAppel  ON Usager.codeUsager = ListeAppel.codeUsager
                            WHERE      (ListeAppel.dateListeAppel BETWEEN @date AND @datefin) and (year(getdate())-year(Usager.datenaissanceusager) between 18 and 44 and usager.genreusager=1)
) AS b
,  (  SELECT COUNT(DISTINCT usager.codeusager) AS cnt3
FROM usager
INNER JOIN ListeAppel  ON Usager.codeUsager = ListeAppel.codeUsager
                            WHERE      (ListeAppel.dateListeAppel BETWEEN @date AND @datefin) and (year(getdate())-year(Usager.datenaissanceusager) between 45 and 65 and usager.genreusager=1)
) AS c
, (  SELECT COUNT(DISTINCT usager.codeusager) AS cnt4
FROM usager
INNER JOIN ListeAppel  ON Usager.codeUsager = ListeAppel.codeUsager
                            WHERE      (ListeAppel.dateListeAppel BETWEEN @date AND @datefin) and (year(getdate())-year(Usager.datenaissanceusager) >65 and usager.genreusager=1)
) AS d
3
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011
22 mars 2008 à 08:19
Personne pour me donner un coup de pouce sur le sujet ??
0
Rejoignez-nous