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

SQL Oracle Discussion :

Doublons avec fonction lag


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 236
    Points : 78
    Points
    78
    Par défaut Doublons avec fonction lag
    Bonjour,

    J'ai une requete (assez longue) qui calcule les pourcentages d'augmentation de salaire en fonction de la date d'augmentation(date_augmentation) et au 31/12(temps_id).

    Lorsque je fais le calcul seulement pour la date de fin d'année, je n'ai pas de doublons.
    Par contre si je rajoute une fonction lag qui calcule le % sur la date d'augmentation...j'ai des doublons.

    Voici un extrait de ma requete :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    SELECT DISTINCT
      SALARIE.NUM_SECU,
      REMU_THEORIQUE.REMU_mensuelle,
      REMU_THEORIQUE.OBAN,
      REMU_THEORIQUE.REMU_ANNUELLE,
      REMU_THEORIQUE.DATE_AUGMENTATION
    , REMU_THEORIQUE.PCT_AUGMENT_AUGMENT
    FROM
      SALARIE,
      ( 
      SELECT distinct nom, prenom, sal_id, temps_id, date_augmentation,remu_annuelle, remu_mensuelle, num_secu, matricule , OBAN
     
     ,ABS((lag(remu_mensuelle, 1) OVER ( PARTITION BY nom, prenom, sal_id ,  num_secu ORDER BY temps_id) - remu_mensuelle) / (lag(remu_mensuelle, 1) OVER ( PARTITION BY nom, prenom, sal_id , num_secu ORDER BY temps_id))*100) AS pct_augment
     
     ,ABS((lag(remu_mensuelle, 1) OVER ( PARTITION BY nom, prenom, sal_id , num_secu ORDER BY date_augmentation ) - remu_mensuelle) / (lag(remu_mensuelle, 1) OVER ( PARTITION BY nom, prenom, sal_id , num_secu ORDER BY date_augmentation))*100) AS pct_augment_augment
    FROM(
    --Année 2001
    (SELECT distinct nom, prenom, sal_id, temps_id,date_augmentation, MAX(remu_annuelle) as remu_annuelle, MAX(remu_mensuelle) as remu_mensuelle, num_secu, matricule ,  MAX(OBAN) as OBAN
    FROM(
    	SELECT distinct s.nom, s.prenom, sal_id, temps_id, num_secu, matricule, date_augmentation,
    	MAX(GREATEST( ... )) AS remu_annuelle
    	,MAX(GREATEST( ...)) AS remu_mensuelle
    	, NVL(OBAN, 0) as OBAN
    	FROM FRH, SALARIE s
    	WHERE  ..
    	GROUP BY ..
    	ORDER BY ..
    	)group by ..)
     
    union
     
    --Année 2002
    (SELECT distinct nom, prenom, sal_id, temps_id,date_augmentation, MAX(remu_annuelle) as remu_annuelle, MAX(remu_mensuelle) as remu_mensuelle, num_secu, matricule , MAX(OBAN) as OBAN
    	FROM(
    	SELECT  distinct  s.nom, s.prenom, sal_id, temps_id, num_secu, matricule, date_augmentation,
    	MAX(GREATEST( ...	 )) AS remu_annuelle
    	,MAX(GREATEST( ...   )) AS remu_mensuelle
    	, NVL(OBAN, 0) as OBAN
    	FROM FRH, SALARIE s
    	WHERE  ...
    	GROUP BY ...
    	ORDER BY ...
    	)
    group by nom, prenom, sal_id, temps_id,date_augmentation,num_secu, matricule)
    J'ai mis en piece jointe ce que j'obtiens et ce que je veux obtenir.

    J'ai touché au partition by de la fonction mais j'ai tjs le meme pb...

    Si vs avez une idée...Merci d'avance
    Images attachées Images attachées   

Discussions similaires

  1. Eviter les doublons avec la fonction rand()
    Par Adeel.dev dans le forum C
    Réponses: 3
    Dernier message: 14/05/2010, 19h40
  2. Problème avec la fonction LAG
    Par CélineM dans le forum SAS Base
    Réponses: 8
    Dernier message: 01/07/2008, 15h00
  3. Réponses: 3
    Dernier message: 16/06/2004, 11h26
  4. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  5. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57

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