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 :

Order by avancé via classement


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut Order by avancé via classement
    Bonjour à tous,

    Je souhaiterais savoir s'il est possible de renvoyer les lignes d'une table en fonction d'une variable puis d'un classement croissant.

    Exemple de résultat attendu (la ligne en rouge en premier puis le reste) :

    id number type name potential
    67181 15581 t4 name4 20539
    64917 15581 t1 name1 16694
    65584 15581 t3 name3 27018
    65560 15581 t2 name2 37409

    Le potentiel correspond à ma valeur à renvoyer en premier.

    Voici la requête que j'exécute pour extraire les données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select id, pos_number,type,.name, sum(mailboxes) as "Potential"
    from t1  
    left join t2 on t2.plot_id = t1.id 
    left join t3 on t3.id = t2.zone_version_id 
    right join res_partner on t2.partner_id = res_partner.id
    left join codeclient on codeclient.cc_id = res_partner.parent_id 
    left join regroupement on codeclient.parent_id = regroupement.res 
    where res_partner.partner_type_id = 10 
    and t3.version_id = 9 
    and res_partner.pos_number = '015581'
    group by  t3.id,concat(t3.type_of_zone,res_partner.pos_number) ,res_partner.id,res_partner.pos_number, t3.type_of_zone, regroupement.name,regroupement.res,codeclient.ref_interne 
    order by 1,2,5 ;
    J'ai regardé du côté de FIRST_VALUE mais je n'arrive à sortir le résultat que j'attends.

    PS : j'utilise postgresql en bdd.

    Merci par avance

  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
    Oui vous pouvez, mais vous n'avez pas expliqué votre règle de classement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    L'idée est de comparer une variable "potential" avec les différents "potentials" que la requête me renvoie et d'afficher en 1er le potentiel correspond à la variable (si une équivalence est trouvée) puis d'afficher le reste de manière croissante.

    Je ne sais pas si mon explication est clair

  4. #4
    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
    Dans l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    order by case :mavariable when potential then 1 else 2 end asc
           , potential asc;

  5. #5
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Super je viens de modifier ma fonction pour ajouter ma variable cela fonctionne parfaitement.
    Je te remercie pour ton aide 👍👍👍👍


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

Discussions similaires

  1. [XL-2010] Filtres avancées via VBA (Listbox)
    Par Alasgard dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/06/2015, 12h46
  2. Statistiques avancé via MySQL
    Par JStevens dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/10/2012, 17h08
  3. Obtenir numéro d'un classement avec ORDER BY
    Par jersey_girl dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/08/2006, 23h49
  4. Réponses: 3
    Dernier message: 28/06/2006, 16h13
  5. Distinct + order : probleme de classement
    Par Takusen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/04/2006, 13h33

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