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 :

Comptage de délai


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut Comptage de délai
    Bonjour tout le monde,

    j'ai un petit doute sur une faisabilité de la chose suivante, si quelqu'un peut me confirmer que c'est faisable et surtout comment le faire :-)

    J'ai une requête de base qui est la suivante, où un délai est la différence des champs RealCrDt et ClsDate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT convert(decimal(5,2),datediff(ss,RealCrDt,ClsDate)/86400.00) , SubParent2ID, RealCrDt, TeamID 
    FROM Demande  INNER JOIN Qualification ON QualifID = QuaID  LEFT OUTER JOIN Ref ON RefID = Status 
    WHERE  RefNu1 = 1  
    GROUP BY RealCrDt, ClsDate, SubParent2ID, TeamID
    J'aimerais la convertir pour que cela me sorte un niveau de respect du délai (respecté, retard < 2 jours, retard entre 2 et 5 jours, retard supérieur à 5 jours). Vous voyez mon besoin ? genre:

    Nombre de demandes

    | respecté | retard<2j | retard 2j<r<5j | retard>5j |
    -----------------------------------------------------
    |     2    |    14     |      6         |       7   |
    Merci encore

    Adrien

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    utilisez ce genre de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT SUM(CASE WHEN ... THEN 1 END) as respecte,
    SUM(CASE WHEN ... THEN 1 END) as retard_2j,
    ..
    from ma_table
    [GROUP BY ....]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut
    Je vais essayer, mais l'imbrication des sum/convert/datediff et group by est assez galère, je mouline dessus pour le moment merci :-)

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Vous pouvez utiliser des CTE, ça n'en sera que plus lisible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    WITH UnAlias AS (
        SELECT convert(decimal(5,2),datediff(ss,RealCrDt,ClsDate)/86400.00) AS NbJours , SubParent2ID, RealCrDt, TeamID 
        FROM Demande  INNER JOIN Qualification ON QualifID = QuaID  LEFT OUTER JOIN Ref ON RefID = STATUS 
        WHERE  RefNu1 = 1  
        GROUP BY RealCrDt, ClsDate, SubParent2ID, TeamID
    )
    SELECT NbJours , SubParent2ID, RealCrDt, TeamID --> faites vos CASE WHEN ici
    FROM UnAlias

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Encore faudrait-il que votre SGBD supporte les CTE... Et comme vous n'avez pas précisé de quel SGBD il s'agit...
    Mais si c'est MySQL, c'est râpé !
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Délai d'expiration des cookies
    Par Sylvain James dans le forum XMLRAD
    Réponses: 40
    Dernier message: 22/03/2006, 10h22
  2. [CDD] Renouvellement Délai de carence
    Par seb.49 dans le forum Droit du travail
    Réponses: 4
    Dernier message: 11/02/2004, 08h32
  3. Requete de comptage de doublons spéciale
    Par COliveOnTheNet dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2003, 10h11
  4. Délai d'attente expiré
    Par amiral thrawn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 12h04
  5. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27

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