PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD23] Editeur de requêtes et fonction ABS()
[WD23] Editeur de requêtes et fonction ABS()
Iniciado por Der§en, 10,dic. 2018 13:35 - 12 respuestas
Miembro registrado
334 mensajes
Publicado el 10,diciembre 2018 - 13:35
Bonjour,

Dans l'éditeur de requête, on trouve dans les possibilitées la fonction SUM() mais si on a besoin de faire un ABS(SUM())

Peux-on le faire dans l'éditeur de requêtes et si oui, comment ?

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
352 mensajes
Publicado el 10,diciembre 2018 - 14:05
Bonjour, pour faire un SUM(), il faut faire un GROUP BY
Vous pouvez lire cet article pour mieux se familiariser avec ; https://sql.sh/cours/group-by
Miembro registrado
334 mensajes
Publicado el 10,diciembre 2018 - 21:07
J’ai pas de PB avec la fonction SUM mais c’est arriver à faire un ABS() qui je ne trouve pas dans l’éditeur de requêtes !

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Mensaje modificado, 10,diciembre 2018 - 21:08
Miembro registrado
26 mensajes
Publicado el 11,diciembre 2018 - 08:27
Bonjour,
Il est possible d'utiliser la fonction SQL ABS dans une requête (en tout cas c'est ce que dit la documentation :p)





sinon il est toujours possible d'utiliser les commande wlangage en les préfixant avec "wd.", c'est une astuce qui permet même de créer ses propres "fonction" SQL et ça c'est cool :D

Bonne journée.

Amicalement
Miembro registrado
28 mensajes
Publicado el 11,diciembre 2018 - 08:41
Bonjour Dergen,

En fait il faut faire la fonction ABS avant le SUM :
SELECT
Commande.IDCOMMANDE AS IDCOMMANDE,
SUM(ABS( Commande.Quantité ) ) AS la_somme_Quantité
FROM
Commande
GROUP BY
Commande.IDCOMMANDE


J'ai édité la requête manuellement et fait une rétro analyse

--
(\ _ /)
(='.'=)
(")-(")
Mensaje modificado, 11,diciembre 2018 - 08:43
Miembro registrado
28 mensajes
Publicado el 11,diciembre 2018 - 08:46
Sinon tu crée une nouvelle requête, tu prend l'ID (par exemple) de ton fichier. Ensuite tu va sur rubrique calculer, tu fais ABS(Fichier.Quantité), tu valide et ensuite tu fais la somme sur la formule.

--
(\ _ /)
(='.'=)
(")-(")
Miembro registrado
334 mensajes
Publicado el 11,diciembre 2018 - 10:00
Geoffrey ZIMMERMANN a écrit :
Sinon tu crée une nouvelle requête, tu prend l'ID (par exemple) de ton fichier. Ensuite tu va sur rubrique calculer, tu fais ABS(Fichier.Quantité), tu valide et ensuite tu fais la somme sur la formule.

--
(\ _ /)
(='.'=)
(")-(")



Merci, c'est exactement ce que je cherchait :merci:

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
2.682 mensajes
Publicado el 11,diciembre 2018 - 11:09
@Dergen: Ce que tu cherches à faire n'est pas possible en HFSQL. Il te faut faire une sum de tes valeurs et ensuite par code faire la valeur absolue du résultat. C'est une des limites de HFSQL.

Erreur :Les fonctions agrégats (COUNT, AVG, SUM, MIN, MAX) ne sont pas autorisées en dehors des clauses SELECT ou HAVING



@Geoffrey ZIMMERMANN: ce que tu lui dis de faire est faux. Faire la somme des valeurs absolues n'est pas la même chose que faire la valeur absolue de la somme. Il va donc se retrouver avec des données erronées.

Soit les données:
1
2
-8
6
14
-9


La somme des valeurs absolues donne : 40
La valeur absolue de la somme donne : 6

Donc 2 valeurs absolument différentes.

--
Cordialement,

Philippe SAINT-BERTIN
Mensaje modificado, 11,diciembre 2018 - 11:12
Miembro registrado
28 mensajes
Publicado el 11,diciembre 2018 - 11:55
@Philippe SB et @Dergen, autant pour moi. C'était une méthode que j'utilisais, mais j'avais besoin dans mon cas que toute les valeurs soient d'abord positive avant d'en faire la somme.

Dans ce cas, peut-être une fonction SQL peu faire l'affaire

--
(\ _ /)
(='.'=)
(")-(")
Miembro registrado
334 mensajes
Publicado el 11,diciembre 2018 - 14:45
Je ne suis pas en HFSQL mais en Oracle.

Et sur cette requête bien spécifique, toute les valeurs sont en négatif.

Je vient de comparer la requête proposé par Geoffrey SUM(ABS()) dans l'éditeur de requêtes avec comme résultat:
Client  Pals    Colis   UVCs
---------- ---------- ---------- ----------
39      5       180     180
77      33      516     322776
81      22      169     169
88      34      34      34


Et une requête SQL directe dans Oracle ABS(SUM()) avec comme résultat :
CLIENT   PALETTES      COLIS        UVC
---------- ---------- ---------- ----------
        39          5        180        180
        77         33        516     322776
        81         22        169        169
        88         34         34         34


Pour moi le résultat des 2 méthodes donne un résultat identique...

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
28 mensajes
Publicado el 11,diciembre 2018 - 15:26
@Dergen,

Oui pas de soucis dans ce cas, mais si tu as des valeurs négatives à additionner, alors ça devient faux. Si jamais tu as :

39 + -5 = 34 ET PAS 39 + 5 = 44

--
(\ _ /)
(='.'=)
(")-(")
Miembro registrado
334 mensajes
Publicado el 11,diciembre 2018 - 21:23
Dans mon cas (bien particulier) toute mes valeurs sont négative, logique vu qu’il s’agit de sortie de stock.

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
2.682 mensajes
Publicado el 12,diciembre 2018 - 09:36
@Dergen: Attention le négatif pour une sortie est une vue de l'esprit. Nombreux sont les fichiers de mouvements de stock ou toutes les valeurs sont positives et la ligne typée , exemple: 'E' pour entrée et 'S' pour sortie.

J'ai même vu des fichiers ou il y a une colonne entrée et une colonne sortie et ou dans la colonne sortie la valeur peut-être positive ou négative selon si le client a fait un retour de marchandise. Aberrant certes, mais ça existe., d'où toujours préférer de faire les opérations dans le bon sens pour éviter les problèmes par la suite.

--
Cordialement,

Philippe SAINT-BERTIN