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 Firebird Discussion :

sous-requete avec MIN()


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut sous-requete avec MIN()
    Bonjour à tous
    Mon souci est le suivant
    Je souhaite récupérer depuis une table des enregistrements dont le calcul sur deux champs est le minimum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     structure de ma table
    champ1      champ2   champ3   champ4   champ5
    1          4.5        6.8           1                 sfsdf
    2          4.5        3.6           1                 zzre
    3          3.5        2.6           2                  dfodf
    4          3.5        1.8           2                   det
    je souhaiterais obtenir tous les champs des enregistrements 1 et 3 correspondant aux valeurs mini de champ2/champ3 groupées par champ4.

    donc j'envisageais ce type de requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select champ4,champ2,champ3,champ5 from MaTable
    join
    (
    select min(champ2/champ3),champ4 from Matable
    group by champ4
    on ......      // et là je coince
    )
    Merci d'avance pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut Solution
    Bonjour à tous,
    je modifie mon message initial pour préciser exactement ma demande et apporte ci_dessous le code SQL qui répond à ma demande.
    Je souhaitais donc obtenir par mois depuis MaTable la valeur la plus basse d'un calcul sur deux champ (calcul se faissant en regroupant sur deux champs user_name et mois) .En plus de ce calcul je souhaitais obtenir la valeur d'un autre calcul (somme), puis l'identifiant "user_name" correspondant au résultat de la requete initiale décrite plus haut.

    Voici la structure de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE MATABLE (
      ID INTEGER,
      VALEUR1 FLOAT,
      VALEUR2 FLOAT,
      MOIS INTEGER,
      USER_NAME VARCHAR(10),
      VALEUR3 INTEGER
    )
    La requete suivant répond à ma demande ; je ne sais pas si elle est optimisée en tous cas pour moi elle me convient.

    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
    select * from
    (
    select min(T2.Calcul_1) as Calcul_T5,t2.mois from
    (
    select
    T0.user_name,sum(T0.Valeur1)*100/sum(T0.Valeur2) as Calcul_1 ,mois from MaTable T0
    group by t0.user_name,mois
    order by T0.user_name
    )  T2
    group by t2.mois
    )T5
    join
    (
    select  T4.user_name AS Vartemp,
            mois  as moisT4,
            sum(t4.Valeur1)*100/sum(T4.Valeur2) as calcul_2,
            sum(t4.Valeur1) as total_1,
            sum(t4.Valeur2) as total_2 from Matable T4
    GROUP BY T4.user_name,mois
    ) T3
    on (T5.Calcul_T5=T3.calcul_2) and (t5.mois=T3.moisT4)
    order by t5.mois
    Pour information c'est dans la premier partie du code ou j'ai bataillé dur pour obtenir un code acceptable

    en effet je ne pouvais effectuer un group by suivi d'un join
    il a fallu que j'insère un select * from(... group by ....) T5 join pour m'en tirer . en espérant que cela pourra aider certains

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

Discussions similaires

  1. Requete avec MIN() et MAX()
    Par lepotier dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/05/2009, 23h44
  2. [BO 6.5.1] pb de requete avec min et max
    Par aurelie83 dans le forum Designer
    Réponses: 3
    Dernier message: 07/02/2008, 18h52
  3. [BODI] sous select avec min/max
    Par Jeff.p18 dans le forum BODI
    Réponses: 1
    Dernier message: 24/10/2007, 18h21
  4. sous requete avec Not In
    Par tomy29 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/09/2007, 11h41
  5. [UPDATE]Sous-requetes avec plusieurs nuplets
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/07/2005, 18h28

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