Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Wed 17 November 2021 19:48

Hippo
Participant actif
Date d'inscription: 18 Jan 2015
Messages: 57

Retourner les 5 plus grandes communes de chaque département

Bonsoir,

J'ai une table dans PostGreSQL qui liste les départements français et les communes composant chacun des départements, ainsi que les populations municipales.
Je souhaiterais que ma requête retourne pour chaque département les 5 communes ayant le plus d'habitants.

J'ai bien essayé quelquechose comme :
SELECT * FROM table ORDER BY departement,population DESC FETCH FIRST 5 ROWS ONLY

Mais la requête me renvoie évidemment les 10 premières lignes de mon tableau et non les 5 premières lignes pour chaque département ...

Hors ligne

 

#2 Wed 17 November 2021 22:14

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 376

Re: Retourner les 5 plus grandes communes de chaque département

Bonjour,

Des solutions à ce problème sur cette page (en anglais) https://stackoverflow.com/questions/112 … each-group

La solution marquée comme retenue peut répondre à ton problème car je suppose que tu n'as pas de problématique de millions de lignes et donc de performances.

Code:

SELECT
  * 
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY departement ORDER BY population) AS r,
    t.*
  FROM
    table t) x
WHERE
  x.r <= 5;

Dernière modification par p.jeremie (Wed 17 November 2021 22:14)

Hors ligne

 

#3 Thu 18 November 2021 09:33

Hippo
Participant actif
Date d'inscription: 18 Jan 2015
Messages: 57

Re: Retourner les 5 plus grandes communes de chaque département

Génial !! Merci @p.jeremie !
La requête renvoie bien le résultat escompté et effectivement pas de soucis de performances dans mon cas.

Hors ligne

 

#4 Thu 18 November 2021 10:15

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1534

Re: Retourner les 5 plus grandes communes de chaque département

Hello,

ORDER BY population DESC pour avoir les 5 plus importantes populations, non ?

Nicolas

Hors ligne

 

#5 Thu 18 November 2021 11:18

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 376

Re: Retourner les 5 plus grandes communes de chaque département

Nicolas Ribot a écrit:

Hello,

ORDER BY population DESC pour avoir les 5 plus importantes populations, non ?

Nicolas


En effet bien vu, j'ai oublié d'adapter ce détail important quand j'ai collé la requête depuis la source citée dans mon message précédent smile

Hors ligne

 

#6 Thu 18 November 2021 11:40

Hippo
Participant actif
Date d'inscription: 18 Jan 2015
Messages: 57

Re: Retourner les 5 plus grandes communes de chaque département

Exact, je l'avais ajouté en copiant la requête :-)

Hors ligne

 

Pied de page des forums

Powered by FluxBB