IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Différence de temps entre deux lignes dans une table


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Par défaut Différence de temps entre deux lignes dans une table
    Bonjour.
    J'ai une table qui a cette forme:

    id id_demande nouvel_etat date_heure
    1 1 En attente 01/01/2018 10:00:00
    2 1 En Cours 01/01/2018 14:00:00
    3 1 Terminé 01/01/2018 20:00:00
    4 2 En attente 01/02/2018 19:00:00
    5 2 En Cours 01/02/2018 20:00:00
    6 2 Terminé 02/02/2018 16:00:00




    On me demande de faire des stats sur le temps passé pour chaque état des demandes. Comment puis-je savoir combien de temps les demandes ont été dans chaque état?
    Je ne sais pas comparer, faire des différences entre des "lignes" différentes...
    Ma question est-elle claire?

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 639
    Billets dans le blog
    10
    Par défaut
    Les fonctions de manipulation de dates sont assez différentes d'un SGBD à l'autre, quel est le votre ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Avec votre table ainsi créée... MERCI DE RESPECTER LA CHARTE DE POSTAGE
    https://www.developpez.net/forums/a6...gage-sql-lire/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE MaTable 
    (id           int primary key, 
     id_demande   int,
     nouvel_etat  varchar(32),
     date_heure   datetime);
    et ses valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO MaTable VALUES
    (1, 1, 'En attente', '01/01/2018 10:00:00'),
    (2, 1, 'En Cours',   '01/01/2018 14:00:00'),
    (3, 1, 'Terminé',    '01/01/2018 20:00:00'),
    (4, 2, 'En attente', '01/02/2018 19:00:00'),
    (5, 2, 'En Cours',   '01/02/2018 20:00:00'),
    (6, 2, 'Terminé',    '02/02/2018 16:00:00');
    Une solution sous SQL Server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH T AS
    (
    SELECT id_demande, nouvel_etat, 
           LAG(date_heure) OVER(PARTITION BY id_demande 
    	                         ORDER BY date_heure) AS précédent,
    	   date_heure AS actuel
    FROM   MaTable	    
    )
    SELECT id_demande, nouvel_etat, actuel, 
           DATEDIFF(minute, précédent, actuel) AS duréee_mn
    FROM   T
    ORDER BY 1, 3 DESC;
    Donnant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    id_demande  nouvel_etat                      actuel                  duréee_mn
    ----------- -------------------------------- ----------------------- -----------
    1           Terminé                          2018-01-01 20:00:00.000 360
    1           En Cours                         2018-01-01 14:00:00.000 240
    1           En attente                       2018-01-01 10:00:00.000 NULL
    2           Terminé                          2018-02-02 16:00:00.000 1200
    2           En Cours                         2018-02-01 20:00:00.000 60
    2           En attente                       2018-02-01 19:00:00.000 NULL
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Par défaut Merci beaucoup et désolé!
    Frédéric,
    Merci beaucoup pour votre réponse. Depuis des années je lis vos réponses/articles et ça m'a beaucoup aidé.
    Et désolé pour la mise en forme, message bien reçu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcul différence entre deux heures dans une requete
    Par cornet04 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/03/2015, 16h37
  2. Réponses: 2
    Dernier message: 01/08/2013, 19h13
  3. Réponses: 4
    Dernier message: 03/05/2013, 16h01
  4. calcul entre deux champs dans une table
    Par pomar dans le forum Access
    Réponses: 7
    Dernier message: 29/11/2006, 18h27
  5. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo