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 :

ESt-ce j'utilise bien cette fonction analytique ?


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 43
    Points
    43
    Par défaut est ce que j'utilise bien cette fonction analytique?
    Bonjour,

    dans le cadre d'un hopital je dois attribuer une spécialité principale a un séjour d'hospitalisation, l'un de mes critères est d'aller rechercher l'acte le plus lourd facturé pour ce séjour, actuellement voici la manière dont j'effectue le query.

    j'utilise de plus en plus les fonctions analytiques mais je voudrais une confirmation quand a l'utilisation que j'en fais dans ce cadre.

    pour synthétiser j'ai une table admission avec tous les séjours hospitaliers que je dois classifier, et une table facturation dans laquelle je peux retrouver mes prestations facturées.
    Le moyen de retrouver pour moi l'acte le plus est que chaque acte a un code lettre et un coefficient, je ne reprend que les codes lettres K et N, avec en premier choix le N, et le coefficient est un nombre qui plus il est haut plus il est important.

    actuellement je fais ceci, cela vous parait il correct?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    update admission ref
    set (ref.categorie_prestation, ref.prestation, ref.code_lettre, ref.coefficient) = 
    (select
    first_value(a.categorie_prestation)over(partition by a.numero_sejour_hospitalier order by code_lettre desc,coefficient_prestation desc) categorie_prestation,
    first_value(a.prestation)over(partition by a.numero_sejour_hospitalier order by code_lettre desc,coefficient_prestation desc) prestation,
    first_value(a.code_lettre)over(partition by a.numero_sejour_hospitalier order by code_lettre desc,coefficient_prestation desc) code_lettre,
    first_value(a.coefficient)over(partition by a.numero_sejour_hospitalier order by code_lettre desc,coefficient_prestation desc) coefficient
    from facturation a
    where a.numero_sejour_hospitalier = ref.numero_sejour_hospitalier
    and a.code_lettre in ('K','N'))

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Ben le problème c'est que les fonctions analytiques permettent de faire un calcul sur toutes les lignes.
    Elle ne font pas de groupement sur le SELECT

    Donc ton SELECT va ramener plusieurs lignes (identiques). Faut mettre un DISTINCT devant.


    PS : Essaye plutôt de poster dans le sous forum PL/SQL (quand ta question porte sur du SQl.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    oui j'ai oublié de mettre le distinct la mais dans le script en production il y en a bien un

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    En plus tu poses des questions pièges !!!!

    Résultat, c'est bon.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2010, 16h02
  2. Réponses: 3
    Dernier message: 15/03/2007, 10h05
  3. comment utiliser cette fonction?
    Par jojo57 dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 08h38
  4. Est-ce de l'assembleur et fonction utilisées ???
    Par LesPtitsLus dans le forum Assembleur
    Réponses: 1
    Dernier message: 01/05/2006, 12h02
  5. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10

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