SQL requete à problème
Résolu
Skywin
-
Skywin -
Skywin -
Bonjour,
Je cherche à établir des statistiques sur mon site web et une requête me pose quelque difficultés depuis un moment.
J'ai une table étudiants avec pour attributs 'statut' et 'id'.
'statut' peut prendre 3 valeurs (0,1,2).
Je cherche par le biais d'une auto-jointure à faire le ratio entre les étudiants d'un groupe ayant un statut = 0 et l'ensemble des étudiants de ce groupe.
Par exemple :
Groupe 1
-5 on le statut 0 et il y a 10 personnes dans le groupe
Donc la requête retourne 50% pour groupe 1
Pour l'instant j'en suis là :
SELECT (Count(etudiants.id) / Count(bis.id) * 100) AS Percent, bis.groupe
FROM etudiants, etudiants bis WHERE etudiants.statut=0 AND bis.id=etudiants.id
GROUP BY bis.groupe
ORDER BY Percent ASC
Elle ne marche pas évidemment, j'obtiens 100% pour chaque groupe à cause de ma relation "bis.id=etudiants.id". Mon problème est que je suis bloqué et je ne vois pas comment faire ???
Si quelqu'un pouvait m'aider...
Cordialement.
Je cherche à établir des statistiques sur mon site web et une requête me pose quelque difficultés depuis un moment.
J'ai une table étudiants avec pour attributs 'statut' et 'id'.
'statut' peut prendre 3 valeurs (0,1,2).
Je cherche par le biais d'une auto-jointure à faire le ratio entre les étudiants d'un groupe ayant un statut = 0 et l'ensemble des étudiants de ce groupe.
Par exemple :
Groupe 1
-5 on le statut 0 et il y a 10 personnes dans le groupe
Donc la requête retourne 50% pour groupe 1
Pour l'instant j'en suis là :
SELECT (Count(etudiants.id) / Count(bis.id) * 100) AS Percent, bis.groupe
FROM etudiants, etudiants bis WHERE etudiants.statut=0 AND bis.id=etudiants.id
GROUP BY bis.groupe
ORDER BY Percent ASC
Elle ne marche pas évidemment, j'obtiens 100% pour chaque groupe à cause de ma relation "bis.id=etudiants.id". Mon problème est que je suis bloqué et je ne vois pas comment faire ???
Si quelqu'un pouvait m'aider...
Cordialement.
Configuration: Windows Vista Firefox 3.0.5
2 réponses
-
Salut,
essayes cela:
SELECT (COUNT(t.status)/(SELECT COUNT(groupe) FROM etudiants WHERE groupe=t.groupe)*100) AS resultat, groupe FROM etudiants t WHERE t.status=0
GROUP BY 1,groupe
J'espère ça pourra t'aider.
@+ -
Niquel ! Çà fonctionne.
Je ne connaissais pas cette méthode, j'ai appris un peu plus du SQL ^^.
Je te remercie beaucoup !
@+