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 :

Mise en oeuvre de fonctions analytiques : calcul d'indicateur sur les trois derniers mois


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut Mise en oeuvre de fonctions analytiques : calcul d'indicateur sur les trois derniers mois
    Bonjour chers internautes,
    Devant sortir les indicateurs web(tels que le nombre d'entreprise connectées les trois derniers) pour un projet sur lequel je travail, je rencontre quelques difficultés avec la fonction analytique que je tente de mettre en œuvre.
    Brièvement je rappelle la structure de la table sur laquelle je travaille :Appelons-la table_entreprise contenant les champs suivants : ID_ENTREPRISE,TYPE_CONVENTION,DATE_DERNIÈRE_CONNEXION où ID_ENTREPRISE désigne la clé primaire de la table.
    Pour déterminer le nombre d'entreprise s'étant connectées les trois derniers mois par type de convention j'ai utilisé la requête suivante:
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT   covention_type, date_derniere_connexion, sum(nb_connecte) over partition BY convention_type, date_derniere_connexion order  by date_derniere_connexion rows 2 preceding)
    Cette requête ne me donne pas les résultats escomptés(voir capture jointe pour le mois de janvier considéré comme étant le mois à partir duquel on cherche à déterminer l'indicateur).
    En effet je constate que le cumul n'est effectué correctement que pour les mêmes conventions pour janvier(résultat KO) alors qu'il devrait l’être pour tous(résultat OK).
    Auriez-vous des idées/pistes/suggestions

    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour,

    tu voudrais que la date de dernière connexion de c soit 201401 alors que c'est 201312 ? Étrange.

    Voudras tu le MAX(date_derniere_connexion) ?

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut
    Bonjour Flodelarab,
    Merci pour ta réponse.
    Ce n'est pas étrange d'avoir pour c 201401, justement toute la complexité se trouve à ce niveau.
    En effet je voudrais pour 201401 la somme totale par type de convention des entreprises qui se connectées en 201311,201312 et 201401
    Si 2012 apparait pour c cela signifie qu'il n'a pas été compté pour les entreprises s'étant connectées les trois derniers mois lorsqu’on était en 201401.
    201401 paraît être le max des trois dates mais ce n'est pas le max que je voudrais

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Est-ce que la requête suivante t'aide?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT   covention_type, date_derniere_connexion, sum(COALESCE(nb_connecte,0)) over partition BY convention_type, date_derniere_connexion ORDER  BY date_derniere_connexion rows 2 preceding)
    201401 paraît être le max des trois dates mais ce n'est pas le max que je voudrais
    Alors d'où vient le 201401 en face du c puisque ce n'est pas le max que tu veux et que personne ne s'est connecté depuis 201312 ?
    Aurais-tu interverti OK et KO?

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut
    Non la requête suivante m'aide pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT   covention_type, date_derniere_connexion, sum(COALESCE(nb_connecte,0)) over partition BY convention_type, date_derniere_connexion ORDER  BY date_derniere_connexion rows 2 preceding)
    Alors d'où vient le 201401 en face du c puisque ce n'est pas le max que tu veux et que personne ne s'est connecté depuis 201312 ?
    Aurais-tu interverti OK et KO?
    201401 en face de c vient du fait qu'on cherche à déterminer la somme des entreprises connectées les trois derniers mois et que 201312 avec convention c satisfait bien la condition.
    Tu remarqueras que la somme des entreprises s'étant connecté les 3 derniers mois(à partir de janvier) est 40 mais c'est lors de la répartition par type de convention que j'ai des souci.
    En effet je dois faire la somme par type de convention.Si une convention me manque en janvier(cas de la convention c par exemple), je dois pouvoir mettre quand même "2 2014 c" ;seule mon mois de référence(ici janvier) doit apparaître
    "KO" et "OK" n'ont pas été inversés
    N'hésite pas si t'as des questions, je pourrais fournir un exemple plus complet

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Si tu ne veux pas de la date de dernière connexion, il ne faut pas demander la date de dernière connexion (ni son max).
    Si tu veux la date référence de ton étude, il faut demander la date référence de ton étude...
    On frôle Lapalisse.

    Si tu as perdu le format de date, c'est dommage car tu aurais pu demander:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT covention_type, date_reference_etude, sum(COALESCE(nb_connecte,0)) ... WHERE date_derniere_connexion BETWEEN (date_reference_etude - INTERVAL 3 MONTH) and date_reference_etude ...

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

Discussions similaires

  1. Ajustements apportés au calcul des points sur les votes
    Par Anomaly dans le forum Evolutions du club
    Réponses: 25
    Dernier message: 21/03/2012, 17h53
  2. calcul de moyenne sur les bins d'un histogramme
    Par berlilou dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/03/2008, 16h03
  3. Fonctions analytiques dans des indicateurs BO
    Par Antoun dans le forum SQL
    Réponses: 3
    Dernier message: 29/01/2008, 02h13
  4. Calcul de Statistics sur les requêtes
    Par Rahustro dans le forum Oracle
    Réponses: 3
    Dernier message: 17/01/2006, 06h19

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