MySQL - calcul

Résolu/Fermé
avenir1 Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 1 avril 2010 - 30 mars 2010 à 23:47
avenir1 Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 1 avril 2010 - 31 mars 2010 à 19:25
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
A voir également:

3 réponses

swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
30 mars 2010 à 23:50
Si j'ai bien compris ton problème, tu dois enlever
group by proprio 

de ta requète
0
swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
30 mars 2010 à 23:56
Il est complet...
Essaye cette requète plutot :
select *, score/max(score) from ma_table
0
avenir1 Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 1 avril 2010
Modifié par avenir1 le 31/03/2010 à 00:04
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...
0
swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
31 mars 2010 à 12:51
select *, sum(score)/max(score) from ma_table group by proprio
0
avenir1 Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 1 avril 2010
31 mars 2010 à 17:35
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 :)
0
avenir1 Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 1 avril 2010
Modifié par avenir1 le 31/03/2010 à 19:25
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 !
0