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 29/11/2010, 17h35   #1
Membre à l'essai
 
Homme
Développeur informatique
Inscription : septembre 2008
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2008
Messages : 38
Points : 22
Points : 22
Par défaut Aide sur requête SQL

Bonsoir,
Je vous expose mon problème
j'ai une table avec notamment les informations suivantes :

- Libellé réalisation
- Temps réalisation
- Service

Voici la structure de la table :
Code :
1
2
3
4
5
6
 
CREATE TABLE IF NOT EXISTS Realisations (
  LibRea varchar(100) NOT NULL,
  TpsRea int(5) NOT NULL,
  Service varchar(50) NOT NULL
)
INSERT d'un jeu de données :

Code :
1
2
3
4
5
6
 
INSERT INTO Réalisations (LibRea, TpsRea, Service) VALUES
('Fermeture porte', 2, '0001'),
('Fermeture Porte', 4, '0001'),
('Réparer Porte', 5, '0002'),
('Changer Porte', 10, '0003');
je souhaiterais réaliser une requête SQL qui me donne en sortie ceci :
le temps total pour "Fermeture Porte" et le temps total pour toutes les autres réalisations (dans mon exemple cela sommerait le temps des actions
"Réparer Porte" et "Changer Porte" si le service était identique) et tout ceci trié par service.

Le résultat attendu en rapport avec le jeu de données serait :

Code :
1
2
3
4
5
6
 
SERVICE      TEMPS1          TEMPS2
------       ----------      ------ 
0001         6               0 
0002         0               5
0003         0               10
Est-ce possible?
Merci.
helio500 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 09h17   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WITH t1 AS (                                          
SELECT Service, Case LibRea when 'Fermeture Porte'    
                then TpsRea                           
                else 0                                
                end Temps1,                           
                Case LibRea when 'Fermeture Porte'    
                then 0                                
                else TpsRea                           
                end Temps2                            
FROM realisations)                                    
SELECT Service, Sum(Temps1) Temps1                    
              , sum(Temps2) Temps2                    
FROM t1                                               
GROUP BY Service                                      
ORDER BY Service
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 09h25   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
Ou encore, en une seule requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT Service,
    SUM 
    (
        CASE
            WHEN LibRea = 'Fermeture Porte' THEN TpsRea
            ELSE 0
        END 
    ) AS Temps1,
    SUM 
    (
        CASE
            WHEN LibRea <> 'Fermeture Porte' THEN TpsRea
            ELSE 0
        END
    ) AS Temps2
FROM realisations
GROUP BY Service
ORDER BY Service
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 18h50   #4
Membre à l'essai
 
Homme
Développeur informatique
Inscription : septembre 2008
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2008
Messages : 38
Points : 22
Points : 22
Merci beaucoup, ça fonctionne.
helio500 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 01h17.


 
 
 
 
Partenaires

Hébergement Web