J'ai une table comme ceci:Mise à jour avec un pourcentage caculation sur la même table
ItemID PersonID Score Percentage
==========================================
1 1 10 [ = 10/10+30 = 25%]
1 2 30 [ = 30/10+30 = 75%]
2 1 20 [ = 20/20+40 = 33%]
2 2 40 [ = 40/20+40 = 67%]
Les données sur « pourcentage » n'est pas entré, mais est calculée automatiquement à un certain intervalle de temps. Le calcul est Pourcentage = Score/Score total de l'ID d'article
Au lieu d'utiliser la méthode "SELECT-faire les maths-UPDATE", j'essaye d'écrire un seul SQL pour mettre à jour le "Pourcentage".
Ce que j'ai essayé est comme ceci:
UPDATE tb_temp AS t1
SET t1.Percentage =
CEIL(t1.Score/
(SELECT SUM(t2.Score) FROM tb_temp AS t2 WHERE t2.ItemID = t1.ItemID)
);
Mais il ne fonctionne pas (Code d'erreur: 1093 Vous ne pouvez pas spécifier la table cible 't1' pour la mise à jour dans la clause FROM)..
Une idée?
Avec 'CEIL()', vous obtiendrez '34%' et '67%' 'pour Itemid = 2'. – Danosaure
thx pour rappeler .... Je voudrais utiliser ROUND() à la place. – LazNiko