Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 16h34   #1
Invité régulier
 
Inscription : août 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 21
Points : 8
Points : 8
Par défaut Faire des ruptures avec cumul

Bonjour,

J'ai un fichier avec des enreg
zone1 zone2 zone3
dep b 1
arri c 2
dep b 3
arri c 1
dep b 4
arri b 12

je dois dans un premier temps faire le cumul de dep/arri par type de zone2

Total
dep b 3
arri c 2
arri b 1

ensuite cumul par type zone2
Total
b 4
c 1

et pour finir
cumul total
5

J'arrive à le faire en trois requêtes

J'aimerai savoir si l'on peut le faire en une

Merci pour votre aide
gb1963 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h46   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Pourquoi ne pas utiliser "UNION" ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 17h11   #3
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Quel SGBD ?
(Sous Oracle, tu fais GROUP BY rollup(zone1, zone2))
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h16   #4
Invité régulier
 
Inscription : août 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 21
Points : 8
Points : 8
DB2 sur AS400

union ne va pas
mais je passe par des max

merci pour votre aide
gb1963 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h47   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Bonjour,

Depuis la version V6R1 (me semble pas qu'en V5R4 ceci soit possible) vous pouvez utilisez les rollup / cube, etc

http://publib.boulder.ibm.com/infoce...upbyclause.htm

Donc la solution de pacmann est a utilisée si vous êtes dans cette version.

Code :
1
2
3
4
 
SELECT zone1, zone2, sum(zone3)
FROM ma_table
GROUP BY ROLLUP (zone1, zone2)
edit :ah oui tiens c'est un count autant pour moi
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 12h04   #6
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Hmmm par contre, au vu de l'exemple donné, j'aurais plutôt dit count(*) que sum(zone3)
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 12h18   #7
Invité régulier
 
Inscription : août 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 21
Points : 8
Points : 8
Voici la requête qui fonctionne mais j'ai un petit problème, si l'une des valeurs Total C ou Total D est à 0, la somme total ne se fait pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
"Val",max("Total C") AS "Total C", max("Total D")
 AS "Total D", max("Total C")+ max("Total D") AS "Total Général"
 
FROM (SELECT DISTINCT
 
case when "Val"='P' then 'Pxx' 
when "Val"='D' then 'Dxx' 
when "Val"='L' then 'Lxx' 
when "Val"='W' then 'Pxx' end AS "Val",
 
case "Charg" when 'C' then count("Charg")  end AS "Total C",
case "Déch" when 'D' then count("Déch") end AS "Total D"
 
FROM ({requête de sélection enreg}) AS Resultat
GROUP BY "Val", "Charg", "Déch")
 AS Resultat2
GROUP BY "Val"

Version 400 V5R3
gb1963 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 13h43   #8
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bonjour,

Et avec un coalesce ?


Code :
1
2
3
 
SELECT coalesce(max("Total C"), 0) 
...
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 16h41   #9
Invité régulier
 
Inscription : août 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 21
Points : 8
Points : 8
j'ai utilisé un ifnull

Merci à tous pour votre aide
gb1963 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h34.


 
 
 
 
Partenaires

Hébergement Web