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 :

[ORACLE] groupements ratés !


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut [ORACLE] groupements ratés !
    Bonjour,


    Je souhaiterais réaliser des groupements de mesures par jour et par identifiant de métier pour lesquelles la date est comprise entre l'heure_début et l'heure_fin associée au métier.

    ---> aggrégation de mesures à la journée, par métier


    MESURE_METIER_CV

    VALEUR FLOAT,
    DATE_MES DATE not null,
    PERFORMANCE FLOAT,
    FREQ_MES VARCHAR2(1) not null, (Q=quart d'heure, J= jour)
    IDMETIER NUMBER not null,
    INDISPO FLOAT

    clé primaire : (DATE_MES,IDMETIER,FREQ_MES)

    METIERS

    IDMETIER NUMBER not null,
    NOM_METIER VARCHAR2(50),
    HEURE_DEBUT DATE,
    HEURE_FIN DATE


    clé primaire : IDMETIER

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    select t.IDMETIER, AVG(t.PERFORMANCE), SUM(t.indispo)
    , AVG(t.VALEUR) AS MOY_VAL, TO_date(t.DATE_MES, 'dd/mm/yyyy')
    , 'J' AS TYPE_MES
    from MESURE_METIER_CV t,METIERS a
    where (
    a.idmetier=t.idmetier
    and
    FREQ_MES ='Q' 
    and 
    to_char(t.date_mes,'hh24:mi:ss')>=to_char(a.heure_fin,'hh24:mi:ss')
    and  
     to_char(t.date_mes,'hh24:mi:ss')<=to_char(a.heure_fin,'hh24:mi:ss'))
    GROUP BY (t.IDMETIER, to_date(t.DATE_MES, 'dd/mm/yyyy'))
    ;
    la requête fonctionne presque (donc pas du tout ).

    Pour certains jours les aggrégations ne sont pas faites .... pourtant il y a des mesures qui se situent dans les heures d'ouverture du métier je ne comprend pas...

    et si je met un COUNT(*) pour compter le nombre d'éléments qui ont servi a ce regroupement

    c'est à dire le nombre de mesures qui ont servi a mesuré la journée pr un métier j'obtiens systématiquement 1 !!!
    alors que j'ai entre 30 et 48 mesure par jour par métier.

    j'en déduis que le group by de ma requete ne fait pas ce que je pense qu'il fait...

    Il doit y avoir une subtilité du group by que je n'ai pas saisi


    merci bcp à ceux qui se pencheront sur mon petit soucis

    Charly

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Essayez avec un COUNT(DISTINCT ... ) ?

    merci de respecter ceci : http://www.developpez.net/forums/showthread.php?t=944

    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/ * * * * *

  3. #3
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    J'ai essayé de faire un COUNT(distinct ...)
    j'obtiens toujours qu'il n'y a qu'un enregistrement par regroupement par jour par métier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    select t.IDMETIER, AVG(t.PERFORMANCE), SUM(t.indispo)
    , AVG(t.VALEUR) AS MOY_VAL, COUNT (distinct(t.date_mes)) AS NB_M,TO_date(t.DATE_MES, 'dd/mm/yyyy')
    , 'J' AS TYPE_MES ......
    n'y aurait il pas un soucis avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY (t.IDMETIER, to_date(t.DATE_MES, 'dd/mm/yyyy'))
    ??

  4. #4
    Membre confirmé Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Par défaut
    dsl

    Il s'agit d'une erreur d'inattention de ma part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    select t.IDMETIER, AVG(t.PERFORMANCE), SUM(t.indispo)
    , AVG(t.VALEUR) AS MOY_VAL, TO_date(t.DATE_MES, 'dd/mm/yyyy')
    , 'J' AS TYPE_MES
    from MESURE_METIER_CV t,METIERS a
    where (
    a.idmetier=t.idmetier
    and
    FREQ_MES ='Q' 
    and 
    to_char(t.date_mes,'hh24:mi:ss')>=to_char(a.heure_debut,'hh24:mi:ss')
    and 
    to_char(t.date_mes,'hh24:mi:ss')<=to_char(a.heure_fin,'hh24:mi:ss'))
    GROUP BY (t.IDMETIER, to_date(t.DATE_MES, 'dd/mm/yyyy'))
    ;
    merci à SQLpro

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

Discussions similaires

  1. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  2. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  3. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 16h52
  4. [Kylix] sqlconnection + oracle
    Par tibo55555 dans le forum EDI
    Réponses: 1
    Dernier message: 02/09/2002, 09h09
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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