Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 01/12/2011, 11h28   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Par défaut COUNT et SUM

Bonjour,
j'ai une table dont je voudrais extraire un pourcentage en fonction des données qui sont a 0 ou 1 et d'un datax :

uid|data|datax
0|0|56
1|0|56
2|1|56
3|0|56
4|1|56
5|1|56
6|1|56
7|1|30
8|0|45

etc ...

je voudrais pouvoir sortir le pourcentage des datas qui sont a 1 et le pourcentage de ceux qui sont a 0 pour le datax qui est (par ex) a 56
J'utilise cette requête pour l'instant :

Code :
1
2
 
SELECT COUNT( DATA) AS somme,COUNT(*)*100/count(*) AS pourcentage, DATA AS resultat FROM TABLE WHERE ( dataX = 56) GROUP BY DATA
j'obtiens bien un tableau avec :

Somme | pourcentage |resultat
3 |100.00|0
4 |100.00|1

Mais j'aimerais avoir dans ce cas :

pourcentage | entrées totales en fonction de datax:
40 (%) |7 (count de toutes les entrées)
60 (%) |7 (count de toutes les entrées)

j'ai essayé d'y intégrer la fonction SUM mais ça ne fonctionne pas ...
Quelqu'un peut m'aider ?
kabdriver est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h35   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 654
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 654
Points : 2 656
Points : 2 656
Bonjour,

C'est bien un sum() qu'il faut utiliser

Code :
1
2
3
4
5
 
SELECT count(*), sum(DATA)/count(*) AS pct_1, (count(*) - sum(DATA))/count(*) AS pct_0
FROM ma_table
WHERE dataX = 56
GROUP BY DATA
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h51   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Bonjour, merci pour votre reponse , j'ai fais le test mais j'obtiens :
count(*) pct_1 pct_0
10 0.0000 1.0000
15 1.0000 0.0000

le SUM fait en fait je pense la somme des 0 et/ou des 1 , ca ne donne pas le pourcentage .
kabdriver est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 12h05   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 654
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 654
Points : 2 656
Points : 2 656
oui il fait ca.

ah oui la coquille est en fait dans le group by, j'ai recopier betement votre code.


punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 12h22   #5
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Ceci dit, s'il filtre avec WHERE dataX = 56, GROUP BY dataX ne sert plus à grand chose.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 14h14   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Merci !.. c'est nickel.
kabdriver est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h41.


 
 
 
 
Partenaires

Hébergement Web