Bonjour,

Je vous propose un nouvel élément à utiliser : Quel est l'équivalent de la fonction SUM pour un produit ?

MySQL n'a pas de fonction pour agréger par produit. Toutefois, il est possible de le faire avec les fonctions EXP et LN.

Si, par exemple, vous avez la table suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE Exemple (
  forme varchar(20),
  dimension varchar(10),
  facteur float NOT NULL
) ;
Et le jeu de données suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
INSERT INTO Exemple VALUES('parallélépipède', 'largeur', 10);
INSERT INTO Exemple VALUES('parallélépipède', 'longueur', 30);
INSERT INTO Exemple VALUES('parallélépipède', 'hauteur', 15);
INSERT INTO Exemple VALUES('pyramide', 'base', 20);
INSERT INTO Exemple VALUES('pyramide', 'hauteur', 30);
INSERT INTO Exemple VALUES('pyramide', 'constante', 1/3);
On veut calculer le volume de chaque forme, et donc faire quelque chose comme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
-- erreur de syntaxe
SELECT forme, Produit(facteur) AS Volume
FROM Exemple
GROUP BY forme
Cette requête n'est pas valide parce que la fonction Produit() n'existe pas.

on la remplacera donc par l'exponentiel d'une somme de logarithmes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT forme, EXP(SUM(LN(facteur))) AS Volume
FROM Exemple
GROUP BY forme
Qu'en pensez-vous ?