Rechercher : dans
Par :

[SQL] comment calculer un total ?

Dernière réponse le 3 avr 2009 à 10:49:42 Riwalenn, le 23 nov 2005 à 14:41:45 
 Signaler ce message aux modérateurs

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...
Cordialement,
Riwalenn

Meilleures réponses pour « [SQL] comment calculer un total ? » dans :
Google Maps - Calculer un Itinéraire VoirTrouver des adresses, c’est déjà très pratique. Cependant, Maps peut faire bien mieux en vous permettant de calculer un itinéraire entre un point de départ et un point d’arrivée. Il existe trois méthodes pour déterminer un parcours : Cliquez sur...
Télécharger Ma Calculatrice VoirWindows propose par défaut une calculatrice avec des fonctions dites scientifiques mais tout de même incomplètes. MaCalculatrice est une calculatrice beaucoup plus complète et évoluée. C'est une calculatrice graphique et comprend divers modules...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

GallyNet, le 23 nov 2005 à 14:45:51
  • +1

Et si tu enleve le "group by" ?

Répondre à GallyNet

3

hssissen, le 23 nov 2005 à 15:05:32
  • +1

Exact! si tu veux une somme totale, tu ne peux pas faire une somme par groupe, donc sans group by!

Répondre à hssissen

2

Riwalenn, le 23 nov 2005 à 15:05:04
  • +1

Si j'enlève Group By ma requête ne fonctionne pas et si je mets à la place order by c'est pareil...
Cordialement,
Riwalenn

Répondre à Riwalenn

4

GallyNet, le 23 nov 2005 à 15:09:00
  • +5

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')

Répondre à GallyNet

5

Riwalenn, le 23 nov 2005 à 15:13:56
  • +1

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 ?

Cordialement,
Riwalenn

Répondre à Riwalenn

6

hssissen, le 23 nov 2005 à 15:47:15
  • +4

Oui, tu n'as qu'a introduire dans ta SELECT, WHERE et BETWEEN le semaine convertie en nb. de jours (7!).

Répondre à hssissen

7

Riwalenn, le 23 nov 2005 à 16:48:28
  • +1

Je dois avouer que ce n'est pas très clair pour moi ce que tu dis... Cordialement,
Riwalenn

Répondre à Riwalenn

8

bacchuss, le 23 nov 2005 à 16:53:39
  • +1

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 __________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss

9

Riwalenn, le 23 nov 2005 à 17:10:18
  • +1

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%' Cordialement,
Riwalenn

Répondre à Riwalenn

10

bacchuss, le 23 nov 2005 à 17:13:40
  • +1

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
__________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss

11

GallyNet, le 23 nov 2005 à 17:14:54
  • +1

Comment tu enregistre ta date dans ta base ?
Avec un champ date, datetime, timestamp ou un simple varchar ?

Répondre à GallyNet

12

Riwalenn, le 23 nov 2005 à 17:20:54
  • +1

C'est du datetime GallyNet Cordialement,
Riwalenn

Répondre à Riwalenn

13

GallyNet, le 23 nov 2005 à 17:23:17
  • +1

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 ?

Répondre à GallyNet

14

GallyNet, le 23 nov 2005 à 17:30:54
  • +1

Bon, je part, si demande tu as pas ta réponse, je continurai a chercher. ;-)

Répondre à GallyNet

15

Riwalenn, le 23 nov 2005 à 17:48:26

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
Cordialement,
Riwalenn

Répondre à Riwalenn

16

GallyNet, le 24 nov 2005 à 08:53:05

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) 

Répondre à GallyNet

17

Riwalenn, le 24 nov 2005 à 09:15:10

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.

Cordialement,
Riwalenn

Répondre à Riwalenn

18

GallyNet, le 24 nov 2005 à 09:31:58

Ok, mais alors a quoi correspond le 'dd' ?

Répondre à GallyNet

19

Riwalenn, le 24 nov 2005 à 09:45:46

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 Cordialement,
Riwalenn

Répondre à Riwalenn

20

Riwalenn, le 25 nov 2005 à 16:45:24

Je vous remercie pour votre aide et pour les solutions apportées à mon problème...
;) Cordialement,
Riwalenn

Répondre à Riwalenn

21

GallyNet, le 25 nov 2005 à 16:47:47

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 ?

Répondre à GallyNet

34

Javi, le 8 jui 2008 à 11:43:48

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...

Répondre à Javi
Collection CommentÇaMarche.net