Sum de 2 chiffres decimales

Signaler
Messages postés
1
Date d'inscription
samedi 11 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
-
Messages postés
12
Date d'inscription
mercredi 12 août 2020
Statut
Membre
Dernière intervention
16 août 2020
-
Bonjour, je suis débutant en sql
Lorsque je fais une requête:
Sélect sum(prix) from forfait where nom="adulte" or nom="enfant" group by station


Ca additionne le prix du forfait enfant et du forfait adulte pour chaque station mais le résultat donné est faux... par exemple j'ai 17.50 et 20,50 et ça m'affiche 37 au lieu de 38...
Pk?
Merci d'avance

1 réponse

Messages postés
14784
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 septembre 2020
437
Bonjour

pour tes prochains posts, merci de lire et d'appliquer ce qui est décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je sql c'est pas mon trip, mais ça ressemble à un problème de type.

Option 1 prix est de type int, quand tu as rentré 17.50, il a stocké 17, et pour 20.50 il a stocké 20.
Option 2, Sum retourne fait la somme d'entiers donc pour 17.50 il prend 17 et pour 20.50 il prend 20.
Et 20 + 17 = 37

Ayant trouvé des exemples sur le net ou Sum retourne un nombre décimal, je pencherais pour l'option 1
Messages postés
12
Date d'inscription
mercredi 12 août 2020
Statut
Membre
Dernière intervention
16 août 2020
1
Bonjour,

Le langage SQL permet de spécifier une expression en paramètre des fonctions d'agrégation à la condition que cette expression soit un scalaire dont le type est compatible avec l'opération réalisée (ex : un numérique pour SUM, mais presque tout ce que l'on veut pour MAX).
La fonction SUM retourne des valeurs du type de l'expression qui lui est passée en paramètre. Si le résultat de l'expression est de type entier, SUM retournera un entier pour chaque ligne du dataset obtenu. Le type de la valeur résultant d'une expression est déterminé selon des règles assez complexes. Il se peut que ce résultat soit un entier si l'expression contient au moins un entier. Par exemple si l'on vend des boîtes de conserve, le prix d'une commande sera donné par le nombre de boîtes multiplié par leur prix unitaire. Si on commande de la sauce tomate et de la choucroute, le prix total est donné par la somme des deux produits. Les nombres de boîtes étant des entiers, le résultat pourrait, je dis bien pourrais, être de type entier avec la troncature que l'on constate dans la question posée par Hugo. Pour éviter ce genre de problème, il est bon de faire des conversions de type explicite ou de n'utiliser que des colonnes de même type.
La conversion d'un type à l'autre est réalisée par des fonctions dont la signature dépend du dialecte SQL utilisé. Pour cela on se référera à la documentation du SGBD.

Cordialement,