MySQL - calcul

[Résolu/Fermé]
Signaler
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010
-
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010
-
bonjour,

je suis novice en mysql alors j'ai une table contenant le nom de propriétaires d'animaux, chaque propriétaire peut avoir plusieurs animaux et il a un score de préférence pour chaque animal :
P1 anim1 score1
p1 anim2 score2
....
p2 anim1 score 1
p2 anim2 score2
......

je veux calculer un coefficient de préférence en divisant le score de préférence par le score maximal pour chaque propriétaire :
select *, score/max(score) from ma_table group by proprio

Le problème c'est qu'il me calcule le score uniquement pour la première valeur trouvée dans la table càd par exemple pour :
P1 anim1 score1 score_pref
P2 anim1 score1 score_pref

Il ne calcule pas les valeurs pour les autres entrées.

Merci bcp si quelqu'un peut m'aider

3 réponses

Messages postés
1059
Date d'inscription
mercredi 30 septembre 2009
Statut
Membre
Dernière intervention
16 décembre 2018
241
Si j'ai bien compris ton problème, tu dois enlever
group by proprio 

de ta requète
Messages postés
1059
Date d'inscription
mercredi 30 septembre 2009
Statut
Membre
Dernière intervention
16 décembre 2018
241
Il est complet...
Essaye cette requète plutot :
select *, score/max(score) from ma_table
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010

j'ai oublié de spécifier que je veux diviser par le score max pour chaque propriétaire et non de l'ensemble, j'ai essayé la requête mais elle ne me donne rien ca veut dire une seule ligne...
Messages postés
1059
Date d'inscription
mercredi 30 septembre 2009
Statut
Membre
Dernière intervention
16 décembre 2018
241
select *, sum(score)/max(score) from ma_table group by proprio
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010

salut swoog42,

ce que je veux faire c'est de diviser le score par le score max de chaque propriétaire (le score max différe d'un proprio à l'autre) voici un exemple de résultat que je veux obtenir :

Propriétaire animal score score_préférence
P1 anim1 4 4/6
P1 anim2 6 6/6
P1 anim3 1 1/6
P2 anim1 2 2/4
P2 anim2 4 4/4
.......

Mon problème c'est qu'avec ma commande il ne calcule le score que pour le premier P1 (ou P2...) qu'il rencontre et ne calcule pas pour le reste des P1 (ou P2 ....) et donc avec la commande suivante :
select *, score/max(score) from ma_table group by proprio
j'ai le résultat suivant :
Propriétaire animal score score_préférence
P1 anim1 4 4/6
P2 anim1 2 2/4
P3 .........

merci :)
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010

j'ai résolu le pb il fallait juste travailler avec les tables temporaires pour pouvoir d'abord stocker le score max pour chaque proprio, puis assigner le score max à chaque proprio dans ma table initial et enfin caculer le score de préférence.

Merci !