Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 17h46   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 0
Points : 0
Par défaut Sélectionner la plus petite valeur par année

Bonjour,

J'ai une table de cette forme :
station année valeur
   a      2000     50
   a      2000     70 
   b      2000     35 
   b      2000     65 
   a      2001     80
   a      2001     60
   b      2001     75
   b      2001     40
J'aimerai récupérer, pour chaque station et par année, uniquement la plus petite valeur. Je n'ai mis que deux valeurs par année dans l'exemple mais leur nombre peut varier de 1 à 12.

L'idéal serait d'arriver à récupérer ces valeurs :
   a      2000     50
   b      2000     35  
   a      2001     60
   b      2001     40
J'ai essayé diverses requête, notamment avec min(champ), mais sans succès pour le moment. Merci d'avance pour votre aide.
Catalyst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 18h24   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Postez la requête que vous avez essayé, car vous êtes dans la bonne direction.
Relisez aussi le cours sur les agrégats :
http://sqlpro.developpez.com/cours/sqlaz/ensembles/
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 22h13   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 0
Points : 0
J'ai trouvé, merci pour le lien.

Voici ma requête:

Code :
1
2
3
4
5
 
SELECT * , min( valeur ) AS minval
FROM `table`
WHERE station = 'a'
GROUP BY annee
Catalyst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 01h40   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
SELECT *, c'est une mauvaise pratique.
Des colonnes dans un SELECT non référencées dans le GROUP BY, c'est permis par MySQL mais c'est à proscrire également.
Votre requête doit être :
Code :
1
2
3
4
5
  SELECT annee, min(valeur) AS minval
    FROM TABLE
   WHERE station = 'a'
GROUP BY annee
ORDER BY annee
Ou encore :
Code :
1
2
3
4
  SELECT station, annee, min(valeur) AS minval
    FROM TABLE
GROUP BY station, annee
ORDER BY station, annee
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h44.


 
 
 
 
Partenaires

Hébergement Web