Posez votre question Signaler

[SQL] comment calculer un total ? [Résolu]

Riwalenn 353Messages postés 25 août 2005Date d'inscription 8 mars 2011Dernière intervention - Dernière réponse le 7 avril 2011 à 09:36
Bonjour à tous,

voilà jusqu'ici j'utilisais la requête suivante en SQL :

SELECT ProductName, SUM(Quantity) AS TOTAL
FROM DeliveryDtls
WHERE (DATEDIFF(dd, CreateDate, '11/02/2005') = 0) AND (Quality LIKE 'S')
GROUP BY ProductName


ProductName étant une colonne ainsi que Qality. Dans la table Quality j'ai 5 option dont 'S'.

Cette requête me permet d'avoir le total de mes produits de la table pour la journée. Chaque ligne représentant un produit.

Moi je voulais savoir s'il était possible d'avoir une seule ligne au lieu de plusieurs et donc un total.

Pour exemple :

le jour cité ma requête donne comme résultat :

ProductName I TOTAL
produit1 : 5
produit2 : 15
produit3 : 20
produit4 : 100
produit5 : 5
...

moi je voudrais que le résultat de ma requête soit :
Totalproduits : 145 par exemple

J'ai un bouquin mais dedans ils expliquent comment faire une moyenne mais pas comment faire un total d'une table...

si quelqu'un a la réponse je l'en remercie d'avance...
Lire la suite 

[SQL] comment calculer un total »

36 réponses
Réponse
+8
moins plus
Et si tu enleve le "productName" ?
SELECT SUM(Quantity) AS TOTAL
FROM DeliveryDtls
WHERE (DATEDIFF(dd, CreateDate, '11/02/2005') = 0) AND (Quality LIKE 'S')
Ajouter un commentaire
Réponse
+2
moins plus
Et si tu enleve le "group by" ?
hssissen - 23 nov. 2005 à 15:05
Exact! si tu veux une somme totale, tu ne peux pas faire une somme par groupe, donc sans group by!
Ajouter un commentaire
Réponse
+2
moins plus
Si j'enlève Group By ma requête ne fonctionne pas et si je mets à la place order by c'est pareil...
Ajouter un commentaire
Réponse
+1
moins plus
Very Good Gally !!! effectivement ça me donne le total de la journée...

merci !!!

je voulais savoir dans la foulée si quelqu'un sait si on peut faire sur une période.. mon code est actuellement faire sur la journée. Est-il possible de le faire sur une semaine ?

hssissen - 23 nov. 2005 à 15:47
Oui, tu n'as qu'a introduire dans ta SELECT, WHERE et BETWEEN le semaine convertie en nb. de jours (7!).
Ajouter un commentaire
Réponse
+1
moins plus
Je dois avouer que ce n'est pas très clair pour moi ce que tu dis...
Ajouter un commentaire
Réponse
+1
moins plus
Syntaxe:

SELECT champ 
FROM matable 
WHERE condition BETWEEN  '2005-01-01' AND '2005-12-31'


tout depend de ton format de date dans ta base aussi
Ajouter un commentaire
Réponse
+1
moins plus
Je crois que j'ai toujours pas saisi la requête que vous m'expliquez...
j'ai essayé ça :
SELECT SUM(Quantity) AS TOTAL
FROM DeliveryDtls
WHERE (Quality like 'S') BETWEEN '11/02/2005' AND '11/07/2005'

à priori c'est pas ça

le probleme c'est que ma date est du genre 28/07/2005 18:44:
et quand je fais une requête je dois mettre la date à l'envers, ça fonctionne pas si je mets '07/28/2005%'
Slim - 7 avril 2011 à 09:36
SELECT SUM(Quantity) AS TotalQuantity
FROM DeliveryDtls
WHERE ......

risquer d'utiliser TOTAL comme nom du champ du total.....
Ajouter un commentaire
Réponse
+1
moins plus
Comment tu enregistre ta date dans ta base ?
Avec un champ date, datetime, timestamp ou un simple varchar ?
Ajouter un commentaire
Réponse
+1
moins plus
c'est du datetime GallyNet
Ajouter un commentaire
Réponse
+1
moins plus
Petite question:
comment ca ce fait que ca marche ca :
DATEDIFF(dd, CreateDate, '11/02/2005') 

parce que datediff ne prend que 2 parametre, et '11/02/2005' n'estpas comprit pas mysql. Et a quoi correspond CreateDate ?
Ajouter un commentaire
Réponse
+1
moins plus
Bon, je part, si demande tu as pas ta réponse, je continurai a chercher. ;-)
Ajouter un commentaire
Réponse
+1
moins plus
Je vous remercie pour votre aide et pour les solutions apportées à mon problème...
;)
Ajouter un commentaire
Réponse
+0
moins plus
SELECT SUM(Quantity) AS TOTAL
FROM DeliveryDtls
WHERE Quality like 'S' AND (ta_date_a_toi BETWEEN '11/02/2005' AND '11/07/2005') 


c'est dd le nom de ta date ?

comme je l'ai dit aussi:
tout depend de ton format de date dans ta base aussi

regarde un peu du coté des timestamp pour tes problemes de format de date
Ajouter un commentaire
Réponse
+0
moins plus
DateCreate correspond à la date de création de la ligne. On utilise un logiciel externe dans lequel on entre des données et chaque données est entrée dans la base de données SQL. Chaque produit que l'on entre dans ce logiciel correspond à une ligne dans la bdd.
C'est un peu fouilli mes explications.

datediff je l'écris comme ça dans ma requête :
WHERE (DATEDIFF(dd, CreateDate, '11/02/2005') = 0)

il faut que je signale que j'utilise une version anglaise de windows
Ajouter un commentaire
Réponse
+0
moins plus
Justement je comprend comment tu utilise le datediff parce qu'il ne doit prend en compte que les deux premier parametre, autrement dit ca doit etre la même chose que :
WHERE (DATEDIFF(dd, CreateDate) = 0) 
Ajouter un commentaire
Réponse
+0
moins plus
non je ne crois pas que ce soit la même chose... moi pour le datediff il me demande 3 arguments.
j'ai le message suivant si je mets la requete que m'as dit :

SELECT ProductName, SUM(Quantity) AS TOTAL
FROM DeliveryDtls
WHERE (DATEDIFF(dd, CreateDate) = 0) AND (Quality LIKE 'S')
GROUP BY ProductName


[Microsoft][ODBC SQL Server Driver][SQL Server]The datediff function requires 3 arguments.

Ajouter un commentaire
Réponse
+0
moins plus
Ok, mais alors a quoi correspond le 'dd' ?
Ajouter un commentaire
Réponse
+0
moins plus
J'en ai aucune idée, on m'avait filé le code sur ce forum pour pouvoir avoir une requête sur une journée donnée vu que le % ne fonctionne pas chez moi...
et le dd n'est pas expliqué sur mon bouquin, il n'existe même pas :P
Ajouter un commentaire
Réponse
+0
moins plus
Ola, d'ailleur j'était tellement pris par mon travail que j'ai pas reposté depuis un moment.
Ta trouver une solution ou ta toujours un probleme ?
Javi - 8 juil. 2008 à 11:43
bonjour,

dans datediff ou aussi dateadd, le format est le suivant :

datediff('d', date1, date2) avec d pour une difference en jours, m pour une difference en mois, etc... en fait ce parametre permet de déterminé l'unité de mesure de la différence : seconde, minute, heure, jour, semaine, mois, annee.

et voila...
Ajouter un commentaire
Réponse
+0
moins plus
non non c'est bon je me suis débrouillée avec le total à la jour grâce au code que tu m'a fourni... ça m'a pris 5mn, heureusement pour moi on avait juste 3 mois de statistiques donc ça a été rapide...
merci
Ajouter un commentaire
Ce document intitulé « [SQL] comment calculer un total ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook
[SQL] comment calculer un total ? - page 2