Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
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 15/04/2011, 17h27   #1
Invité de passage
 
Homme
Concepteur Jeux Vidéos
Inscription : avril 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Concepteur Jeux Vidéos
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 12
Points : 1
Points : 1
Par défaut Tri et noms uniques

Bonjour

J'ai une petite table "score" avec des noms et des scores

name race_id time
Kristof 5 20.999
Kristof 5 88474
Kristof 5 20.9182
Kristof 5 20.0527
Kristof 5 20.2781
Titus 5 21.1892
Titus 5 19.5876
Titus 5 20.1587

J'aimerai faire une liste des meilleurs temps, en enlevant les noms en double.
J'aimerai donc arriver au résultat:

Titus 19.5876
Kristof 20.0527

J'arrive a classer la table par les temps, j'arrive a extraire les nom distincts. Mais pas les deux en même temps.

J'ai testé la fonction DISTINCT et DISTINCT ON

Mon meilleur essai a été:

Code :
SELECT DISTINCT ON (name) * FROM ( SELECT * FROM score ORDER BY time ASC) AS foo
Mais qui donne:

"Kristof" : "88474"
"Titus" : "20.1587"

Je continue a fouiller, mais si quelqu'un a une idée, ou des conseils, je suis preneur.

Bon week end.
Christophe78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 18h39   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
Si on suppose que c'est le temps le plus faible par joueur qui est cherché, le plus simple est de faire
Code :
1
2
 
SELECT nom_joeur, min(temps) FROM score GROUP BY nom_joueur
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 11h37   #3
Invité de passage
 
Homme
Concepteur Jeux Vidéos
Inscription : avril 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Concepteur Jeux Vidéos
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 12
Points : 1
Points : 1
En effet, c'est bien cela que je veux.

Je n'avais pas compris qu'on pouvait ajouter des traitements juste après le select.

Merci beaucoup. J'essaierai cela lundi.

Christophe78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 10h07   #4
Invité de passage
 
Homme
Concepteur Jeux Vidéos
Inscription : avril 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Concepteur Jeux Vidéos
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 12
Points : 1
Points : 1
Citation:
Starting program...
Database is opened
"Titus" : "19.5876"
"Kristof" : "20.0527"
Ca fonctionne.

Merci merci.
Christophe78180 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 13h03   #5
Invité de passage
 
Homme
Concepteur Jeux Vidéos
Inscription : avril 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Concepteur Jeux Vidéos
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 12
Points : 1
Points : 1
En fait, il manquait encore un tri. Je viens de mieux comprendre.

Voici la requête finale:

Code :
SELECT userid, min(time) AS mintime FROM scores WHERE race_id=%d GROUP BY userid ORDER BY mintime ASC
Merci encore.

Christophe78180 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 03h20.


 
 
 
 
Partenaires

Hébergement Web