sommation en sql

sommation en sql - SQL/NoSQL - Programmation

Marsh Posté le 14-10-2009 à 11:50:59    

Bonjour,
 
Je fais appel à votre aide car le problème que j'ai dans ma requête sql me dépasse.
 
J'ai une table client (idclient, sexeclient, etc...), une table ressource (idclient, quantityres, idtyperes, idunitqutres, etc...), une table restype (id, name, etc...) et une table unitprim (id, etc ...)
 
J'ai mis uniquement le nom des colonnes qui m'interessent dans les tables. Ce que je voudrais faire, c'est comptabiliser le somme des ressources par type en fonction du sexe des clients.
 
J'ai fais une requête sql, mais je n'arrive pas à regrouper, par exemple :
pour 2 clients de même sexe et ayant le même type de ressources avec la même unité, la requête me retourne le résultat sur 2 lignes distinctes alors que je voudrais qu'il me la somme et qu'il me la regroupe.
 
Voici ma requête :
 

Code :
  1. select
  2. sexeclient, sum(b.ressource.quantityres) as "Somme ressources",
  3. count(b.client.sexeclient) as "Nombre clients",
  4. b.restype.name as "Type ressource"
  5. from
  6. b.client, b.ressource, b.unitprim, b.restype
  7. where
  8. b.client.idclient = b.ressource.idclient
  9. and b.ressource.idunitqutres = b.unitprim.id
  10. and b.ressource.idtyperes = b.restype.id
  11. group by (
  12. b.client.sexeclient, b.ressource.quantityres, b.restype.name
  13. )
  14. order by sexeclient;


 
Du coup ça me sort :
sexeclient    |    Somme des ressources    |    Nombre clients    |    Type ressource
--------------------------------------------------------------------------------
M               | 100                                 |          2               |   gpl
M               | 100                                 |          2               |   gpl
M               | 100                                 |          2               |   wire
 
J'aurais aimer avoir plutôt ce résultat :  
 
sexeclient    |    Somme des ressources    |    Nombre clients    |    Type ressource
--------------------------------------------------------------------------------
M               | 200                                 |          4               |   gpl
M               | 100                                 |          2               |   wire
 
Est ce que quelqu'un aurait une idée d'où vient le problème dans ma requête sql ?
Merci.

Reply

Marsh Posté le 14-10-2009 à 11:50:59   

Reply

Marsh Posté le 14-10-2009 à 13:45:54    

ta requête marche très bien chez moi (Sql Server).
peux tu donner un exemple de tables remplies avec des données, histoire de voir si c'est bien ce que j'ai supposé ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-10-2009 à 14:57:05    

Salut Harkonnen,
 
Voici un exemple de mes tables remplies avec des données :
 
Table client :
 
idclient    |    sexeclient    |    
---------------------------
3456       |    F
4124       |    F
3936       |    M
 
Table ressource :
 
idclient    |    quantityres    |    idtyperes    |    idunitqutres
----------------------------------------------------------
3936       |    500              |    16             |    3
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       1              |    12             |    5
3936       |       5              |    12             |    5
3936       |       5              |    12             |    5
3936       |       5              |    12             |    5
3936       |      10             |    16              |    3
3936       |      10             |    16              |    3
3936       |       5              |    13              |    5
3936       |       5              |    13              |    5
3936       |      10             |    16              |    3
4124       |       50             |    7              |    4
4124       |       50             |    7              |    4
4124       |       50             |    7              |    4
4124       |       10             |    9              |    5
4124       |         5             |    9              |    5
4124       |     400              |   16             |    3
4124       |     400              |   16             |    3
 
Table unitprim :
id    | name
------------
1     | cm3
2     | L
3     | µL
4     | mg
5     | ml
6     | pmol
7     | cel
8     | µg
9     | g
10   |  ng
11   |  pg
12   |  dL
 
Table restype :
 
id   |  nom
-----------------------------
12  | PBL
 
16  | GPL
 
7    | WIRE
 
9    | EDT
 

Reply

Marsh Posté le 14-10-2009 à 15:02:47    

j'avais oublié le idclient 3456 dans la table ressource :
 
dclient    |    quantityres    |    idtyperes    |    idunitqutres
----------------------------------------------------------  
3456               50                7                4
3456               50                7                4
3456               50                7                4
3456            9989                3                9
3456                 5                7                9
3456                 5                6                9
3456                 4                9                5  
 
et dans la table restype l'id correspondant au 3 et au 6
 
id   |  nom
-----------------------------
3    | BLK
 
6    | HOH

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed