Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 09h15   #1
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Par défaut Aide pour construire une requête

Bonjour à tous,
J'ai un petit souci avec une requête et j'aimerai avoir vos lumières

Voici un exemple de contenu de ma table:
Code :
1
2
3
4
5
6
id    DIV    Statut    delai
1      D1   En Cours      2
2      D1   En Cours      6
3      D1   Nouveau 	  8
4      D1   Nouveau      10
5      D2   En Cours      1
Ce que j'aimerai obtenir c'est le délai moyen par DIV et par statut mais aussi le nombre total de ligne par div
J'arrive à obtenir l'un ou l'autre mais pas les 2 assemblés :

délai moyen :
Code sql :
1
2
SELECT DIV, Statut, AVG(delai) FROM latable 
GROUP BY DIV,Statut

le nombre total de ligne par DIV
Code sql :
1
2
SELECT DIV, COUNT(id) AS Total FROM latable 
GROUP BY DIV


Merci pour votre aide
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h34   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quel est votre SGBD ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h38   #3
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Bonjour et merci de vous intéresser à mon problème.
Pour le moment, on utilise ACCESS 2003
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h43   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
En repartant de votre jeu d'essai, qu'est-ce que visuellement vous aimeriez obtenir ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h59   #5
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Ce sont des résultats que je dois exploiter dans un graphique.
Le mieux, je pense serai d'avoir quelque chose sous la forme suivante :
Code :
1
2
3
4
DIV    Statut    moyDelai   NbLigneParDiv
D1   En Cours      4          4
D1   Nouveau 	   9          4
D2   En Cours      1          1

Même si cela implique que l'information NbLigneParDiv soit dupliquer N fois (N = nombre de Statut différent pour une DIV donnée)

J'ai quand essayé des choses avec un résultat un peu "hybride" mais cela ne me plait guère étant donné que j'arrive à avoir 2 informations différentes dans une colonne
Pour info, mon résultat était le suivant :
Code :
1
2
3
4
5
6
DIV   Statut    NB
D1 	NULL 	4
D2 	NULL 	1
D1    En Cours  4
D1    Nouveau 	9
D2    En Cours  1
Dans ce résultat, la colonne NB a 2 signification :
Pour les lignes ayant un statut NULL, cela représente le nombre total par DIV
Pour les lignes ayant un statut différent de NULL, cela représente la moyenne des délai par DIV et par statut

la requête qui va avec :
Code sql :
1
2
3
4
5
6
7
SELECT DIV , NULL , COUNT( id ) AS nb
FROM latable
GROUP BY DIV
UNION 
SELECT DIV , statut, AVG( delai )
FROM latable
GROUP BY DIV , Statut
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 11h16   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Essayez comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
  SELECT lt1.DIV, lt1.Statut,
         AVG(lt1.delai),
         lt2.total
    FROM latable lt1
         INNER JOIN (SELECT DIV, count(*) AS total
                       FROM latable
                   GROUP BY DIV) lt2
           ON lt2.DIV = lt1.DIV
GROUP BY lt1.DIV, lt1.Statut, lt2.total
ORDER BY lt1.DIV ASC
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 11h25   #7
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Avec une table simplifiée, cela fonctionne.
Maintenant, il va falloir que je l'intègre à ma vraie requête qui est déjà bien complexe

Merci pour votre aide en tout cas , je ne pense pas que j'aurais trouvé seul
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h07.


 
 
 
 
Partenaires

Hébergement Web