Requête qui renvoit un tableau par tranche d'age [Résolu]

Signaler
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
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

Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

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
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Personne pour me donner un coup de pouce sur le sujet ??