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

Oracle Discussion :

Compter le nb de magasin/bu par employé


Sujet :

Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Compter le nb de magasin/bu par employé
    Bonjour / bonsoir

    Je suis nouveau sur le forum et débutant en sql,

    je voudrais écrire une requête sql me permettant de savoir si l'employé est toujours associé au même magasin et à la même business unit

    STORE BU EMPLOYEE START END
    Store_A BU_A 0001 01-01-15 12-01-15
    Store_A BU_A 0001 01-01-14 12-31-15
    Store_B BU_A 0001 01-02-10 05-20-11
    Store_A BU_A 0002 01-01-15 12-31-15
    Store_A BU_A 0002
    Store_A BU_A 0003
    Store_A BU_B 0003

    exemple du résultat attendu :

    STORE BU EMPLOYEE START END NB_ASSOCIATION
    Store_A BU_A 0001 01-01-15 12-01-15 2
    Store_A BU_A 0001 01-01-14 12-31-15 2
    Store_B BU_A 0001 01-02-10 05-20-11 2
    Store_A BU_A 0002 01-01-15 12-31-15 1
    Store_A BU_A 0002 1
    Store_A BU_A 0003 2
    Store_A BU_B 0003 2

    l'employé 0001 est associé a 2 magasins est une bu
    l'employé 0002 est associé a 1 magasin est une bu
    l'employé 0003 est associé a 1 magasin est à 2bu


    Merci pour votre aide


    Padawan_06

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vos règles manquent sûrement d'un peu de détail, mais cette requête renvoie le bon résultat :
    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
    17
    18
    19
    20
    21
    22
    23
    with matable as
    (
    select 'Store_A' as store, 'BU_A' as bu, '0001' as employee, date '2015-01-01' as dt_start, date '2015-12-01' as dt_end from dual union all
    select 'Store_A'         , 'BU_A'      , '0001'            , date '2014-01-01'            , date '2015-12-31'           from dual union all
    select 'Store_B'         , 'BU_A'      , '0001'            , date '2010-01-02'            , date '2011-05-20'           from dual union all
    select 'Store_A'         , 'BU_A'      , '0002'            , date '2015-01-01'            , date '2015-12-31'           from dual union all
    select 'Store_A'         , 'BU_A'      , '0002'            , null                         , null                        from dual union all
    select 'Store_A'         , 'BU_A'      , '0003'            , null                         , null                        from dual union all
    select 'Store_A'         , 'BU_B'      , '0003'            , null                         , null                        from dual
    )
    select store, bu, employee, dt_start, dt_end
         , greatest(count(distinct store) over(partition by employee), count(distinct bu) over(partition by employee)) as nb_association
      from matable;
     
    STORE   BU   EMPLOYEE DT_START   DT_END     NB_ASSOCIATION
    ------- ---- -------- ---------- ---------- --------------
    Store_A BU_A 0001     2015-01-01 2015-12-01              2
    Store_A BU_A 0001     2014-01-01 2015-12-31              2
    Store_B BU_A 0001     2010-01-02 2011-05-20              2
    Store_A BU_A 0002     2015-01-01 2015-12-31              1
    Store_A BU_A 0002                                        1
    Store_A BU_A 0003                                        2
    Store_A BU_B 0003                                        2

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour Waldar,

    Merci pour votre réponse, votre solution réponds à ma question.

    Je tiens à partager avec vous la solution que j'avais trouvée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    with matable as
    (
    select 'Store_A' as store, 'BU_A' as bu, '0001' as employee, date '2015-01-01' as dt_start, date '2015-12-01' as dt_end from dual union all
    select 'Store_A'         , 'BU_A'      , '0001'            , date '2014-01-01'            , date '2015-12-31'           from dual union all
    select 'Store_B'         , 'BU_A'      , '0001'            , date '2010-01-02'            , date '2011-05-20'           from dual union all
    select 'Store_A'         , 'BU_A'      , '0002'            , date '2015-01-01'            , date '2015-12-31'           from dual union all
    select 'Store_A'         , 'BU_A'      , '0002'            , null                         , null                        from dual union all
    select 'Store_A'         , 'BU_A'      , '0003'            , null                         , null                        from dual union all
    select 'Store_A'         , 'BU_B'      , '0003'            , null                         , null                        from dual
    )
    select store, bu, employee, dt_start, dt_end
         , count(distinct store||BU) over(partition by employee) as nb_association
      from matable;

    Encore une fois merci

    PADAWAN_06

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/08/2008, 10h03
  2. créer un formulaire pour des tâches par employé
    Par all_lafleur dans le forum Modélisation
    Réponses: 1
    Dernier message: 11/03/2008, 09h05
  3. Réponses: 2
    Dernier message: 17/06/2007, 19h17
  4. compter le nombre de cellules commencant par
    Par euskadi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2006, 13h36
  5. Compter le nombre d'enreg retournés par un DBExtract
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/11/2004, 14h15

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