Somme...

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 18 févr. 2005 à 16:31
cs_deneus Messages postés 13 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006 - 28 avril 2005 à 22:55
Salut,
je souhaite réaliser une somme mais la je bloque un peu.
en fait j'ai un type de personne.Pour chaque type de personne j'ai un champ CA. Et la je veux faire la somme des CA de chaque type de personne.
Comment dois-je m'y prendre?
Merci

cid019

6 réponses

cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
18 févr. 2005 à 19:57
Il faut utiliser la fonction SUM avec le group BY, voici la copie de l'aide MSDN la dessus :

-----





,
Référence de Transact-SQL




SUM

Renvoie la somme de toutes les valeurs, ou uniquement des valeurs distinctes (DISTINCT) de l'expression. Les fonctions SUM ne s'emploient que sur des colonnes de type numérique. Les valeurs Null sont ignorées.


Syntaxe

SUM ( [ ALL | DISTINCT ] expression )


Arguments

ALL


Applique la fonction d'agrégation à toutes les valeurs. ALL est l'argument par défaut.


DISTINCT


Précise que la fonction SUM doit renvoyer la somme des valeurs uniques.


expression


Constante, colonne ou fonction, et toute combinaison d'opérateurs arithmétiques, de type chaîne ou au niveau du bit. expression est de type numérique exact ou approximatif, à l'exception du type bit. Les fonctions d'agrégation et les sous-requêtes ne sont pas autorisées.


Type des valeurs renvoyées

Renvoie la somme de toutes les valeurs de expression dans le type de données de expression le plus précis.


Résultat de l'expression |
Type renvoyé |
----

catégorie d'entiers,
int,
----

catégorie décimale (p, s),
decimal(38, s),
----

catégorie money et smallmoney,
money,
----

catégorie de réels (real) et flottants (float),
float





<!--IMPORTANT-->


Important Les fonctions d'agrégation distinctes, par exemple AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name), et SUM(DISTINCT column_name), ne sont pas prises en charge avec CUBE ou ROLLUP. En cas d'utilisation de ces fonctions, Microsoft® SQL Server™ renvoie un message d'erreur et annule la requête.

<!--/IMPORTANT-->


Exemple

A. Utilisation de SUM pour les fonctions d'agrégation et d'agrégation par rang

Les exemples suivants illustrent les différences entre les fonctions d'agrégation et celles d'agrégation par rang. Le premier exemple montre les fonctions d'agrégation donnant uniquement des données résumées, et le second montre les fonctions d'agrégation par rang donnant des données résumées et détaillées.

USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO



Voici le jeu de résultats obtenu :

type                                                               
------------ -------------------------- -------------------------- 
mod_cook     22.98                      15,000.00                  
trad_cook    47.89                      19,000.00                  

(2 row(s) affected)

USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type



Voici le jeu de résultats obtenu :

type         price                      advance                    
------------ -------------------------- -------------------------- 
mod_cook     19.99                      0.00                       
mod_cook     2.99                       15,000.00                  

             sum
             ==========================
             22.98                      
                                        sum
                                        ==========================
                                        15,000.00                  

type         price                      advance                    
------------ -------------------------- -------------------------- 
trad_cook    20.95                      7,000.00                   
trad_cook    11.95                      4,000.00                   
trad_cook    14.99                      8,000.00                   

             sum
             ==========================
             47.89                      
                                        sum
                                        ==========================
                                        19,000.00                 

(7 row(s) affected)



B. Calcul des totaux dans les groupes comportant plus d'une colonne

Dans l'exemple suivant, la procédure calcule la somme des prix et des avances pour chaque type de livre :

USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO



Voici le jeu de résultats obtenu :

type                                                               
------------ -------------------------- -------------------------- 
business     54.92                      25,125.00                  
mod_cook     22.98                      15,000.00                  
popular_comp 42.95                      15,000.00                  
psychology   67.52                      21,275.00                  
trad_cook    47.89                      19,000.00                  
UNDECIDED    (null)                     (null)                     

(6 row(s) affected)

-----

Romelard Fabrice (Alias F___)
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
21 févr. 2005 à 09:52
En fait je souhaite faire la somme de 3 colonnes différentes et l'affiche
r dans une autre colonne. Est-ce possible?
Merci

cid019
0
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
21 févr. 2005 à 11:29
Ce n'est plus la somme mais simplement une addition entre différentes colonnes
donc oui simplement avec le +

par exemple :

---------------------------------------
SELECT
colonne1,
colonne2,
colonne3,
colonne1 + colonne2 + colonne3 AS Total

FROM
TaTable
---------------------------------------

Romelard Fabrice (Alias F___)
0
cs_deneus Messages postés 13 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006
26 avril 2005 à 14:29
Bonjour
Je souhaiterais poser une petite question sur le SUM.

j ai un requete, plutot simple qui en fonctionne pas :

SELECT nick , SUM (D1) , SUM(K1)
FROM TeamBleu
GROUP BY nick ;

D'apres l aide MSDN, cela devrait fonctioner, car les colones D1 et K1 sont de type INT.
Si je coupe la requete en 2, et que j execute separement les SUM, cela fonction, mais apparement sous une base de donnée MYSQL, on ne pourrait faire qu un seul SUM :/

Quelqu un me confirme, ou infirme? :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
27 avril 2005 à 21:12
Essayes de faire des sous-requetes, une pr chaque SUM.


cid019
0
cs_deneus Messages postés 13 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006
28 avril 2005 à 22:55
tout roule, mon pb est reglé, c phpmyadmin qui bug par moment ...
je lai construite petit a petit ( comme jetai sur de ma syntaxe) et hop tout baigne :)
merci qan meme :)
0
Rejoignez-nous