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

Requêtes PostgreSQL Discussion :

Traitement du résultat d'une requête avant le RETURNS TABLE (goal average)


Sujet :

Requêtes PostgreSQL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Traitement du résultat d'une requête avant le RETURNS TABLE (goal average)
    Bonjour,
    voici une fonction qui me renvoie le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM classement WHERE nat_poule = $1;
    mais le problème c'est que si dans ce résultat j'ai deux equipes qui ont le même nombre de points donc je dois les trier en utilisant le goal average. Mais pour cela, il faut que je traite le résultat avant de le retourner. SVP, comment puis-je procéder ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE FUNCTION classPoule(pool char) RETURNS TABLE(poole classement2.poule%TYPE, nom classement2.equipe%TYPE, 
    pointe classement2.point, victoire classement2.classement%TYPE) AS $$
    BEGIN
        RETURN QUERY SELECT * FROM classement2 WHERE poule= $1;
    END
    $$ LANGUAGE 'plpgsql';

    Voici la vue classement2:
    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
    CREATE OR REPLACE VIEW classement2 AS 
     SELECT tabl.poule, tabl.equipe, sum(tabl.point) AS point_total, 
        rank() OVER (PARTITION BY tabl.poule ORDER BY sum(tabl.point) DESC) AS classement
       FROM (         SELECT eq.equ_poule AS poule, eq.equ_nom AS equipe, 
                        sum(
                            CASE
                                WHEN ma.mat_resu = '1'::bpchar THEN 3
                                WHEN ma.mat_resu = 'N'::bpchar THEN 1
                                ELSE 0
                            END) AS point
                       FROM equipe eq, match ma
                      WHERE ma.mat_locaux = eq.equ_id
                      GROUP BY eq.equ_nom, eq.equ_poule
            UNION ALL 
                     SELECT eq.equ_poule AS poule, eq.equ_nom AS equipe, 
                        sum(
                            CASE
                                WHEN ma.mat_resu = '2'::bpchar THEN 3
                                WHEN ma.mat_resu = 'N'::bpchar THEN 1
                                ELSE 0
                            END) AS point
                       FROM equipe eq, match ma
                      WHERE ma.mat_visiteurs = eq.equ_id
                      GROUP BY eq.equ_nom, eq.equ_poule) tabl
      GROUP BY tabl.equipe, tabl.poule
      ORDER BY tabl.poule, sum(tabl.point) DESC;
    Dernière modification par ced ; 07/01/2013 à 16h50. Motif: Grammaire

Discussions similaires

  1. Problème de traitement du résultat d'une requête
    Par tim04660 dans le forum Général Java
    Réponses: 2
    Dernier message: 22/04/2014, 09h00
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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