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

PL/SQL Oracle Discussion :

Min et max dans cursor


Sujet :

PL/SQL Oracle

Vue hybride

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 93
    Par défaut Min et max dans cursor
    Bonjour,
    ce programme affiche les ville et leur nombre de visite,
    comment faire pour affiche la plus et la moins ville visité avec leur nombre de visite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    declare
    cursor cr is select VILLEARR,count(*) as nb_visite from trajet group by VILLEARR;
    begin
    for r in cr
    loop
    DBMS_OUTPUT.PUT_LINE(r.VILLEARR||' '||r.nb_visite);
    end loop;
    end;

  2. #2
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    tu peux améliorer ta procédure comme suite
    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
     
     
    declare
     
    maximum number:=0;
    ville_plus_visitee varchar2(40);
    minimum number:=999999;--à estimer
     
    ville_moins_visitee varchar2(40);
     
    cursor cr is select  VILLEARR,count(*) as nb_visite from trajet group by VILLEARR;
     
    begin
    for r in cr
    loop
     if r.nb_visite > maximum then
    maximum :=r.nb_visite;
    ville_plus_visitee:=r.VILLEARR;
    end if;
     
    if r.nb_visite < minimum then
    minimum :=r.nb_visite;
     
    ville_moins_visitee:=r.VILLEARR;
    end if;
     
     
    DBMS_OUTPUT.PUT_LINE(r.VILLEARR||' '||r.nb_visite);
    end loop;
     
    DBMS_OUTPUT.PUT_LINE('La ville la plus visitée est '|| ville_plus_visitee);
     
    DBMS_OUTPUT.PUT_LINE('La ville la moins visitée est '|| ville_moins_visitee);
     
    end;
    /

  3. #3
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    Sinon tu peux mettre une requete qui te donne en issu la ville la plus visitée ainsi la moins visitée.

    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
     
    select A.VILLEARR,B.maximum plus_visitee,C.minimum  moins_visitee from 
     
    (select  VILLEARR,count(VILLEARR)visite 
    from trajet t
    group by VILLEARR)A
     
    left join 
     
     
    (select max(visite)maximum from 
    (select  VILLEARR,count(VILLEARR)visite 
    from trajet t
    group by VILLEARR))B
     
    on A.visite=B.maximum
     
     
    left join 
     
    (select min(visite)minimum from 
    (select  VILLEARR,count(VILLEARR)visite 
    from trajet t
    group by VILLEARR))C
     
    on A.visite=C.minimum
     
     
    where maximum is not null or
    minimum is not null

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Dans des requêtes de type TOP N vous devez toujours commencer par poser la question de ce qu'il convient de faire quand plusieurs enregistrement se qualifiés pour la même position.

Discussions similaires

  1. Recherche des indices min et max dans un tableau 2D
    Par Bysbobo dans le forum LabVIEW
    Réponses: 3
    Dernier message: 03/05/2013, 08h36
  2. Proc TABULATE - Min et Max dans une même cellule
    Par bill1701 dans le forum ODS et reporting
    Réponses: 10
    Dernier message: 17/12/2009, 14h29
  3. Min et Max dans un TCD
    Par benoitbs dans le forum Excel
    Réponses: 2
    Dernier message: 16/05/2008, 09h19
  4. min et Max dans un requete
    Par peppena dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/06/2006, 09h11
  5. [C++.NET] Valeurs min/max dans une TextBox
    Par raboin dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 06/04/2006, 17h15

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