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

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Thu 27 April 2023 16:19

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

Requete SQL avec plusieurs COUNT en select

Bonjour

j'ai beau avoir parcouru le tutoriel postgresql, je n'arrive pas à mes fins pour ma requete SQL.

J'ai une table dans laquelle j'ai 15000 dossiers d'urbanisme répartis sur une trentaine de communes.

Je cherche à compter le nombre de dossiers par commune et par type de dossier.

J'ai donc lancé cette requete (qui fonctionne):

Code:

select count (id_dossier), dossiernumtypeentiteappcode ,communeinseecode
from dossier d
where dossierdatedepot > '2023-01-01' and dossierdatedepot < '2024-01-01'
group by communeinseecode, dossiernumtypeentiteappcode
order by communeinseecode, dossiernumtypeentiteappcode

J'obtiens ce type de résultats

1    CU    07009
14    DP    07009
3    PC    07009
12    CU    07015
6    DP    07015
1    PA    07015
5    PC    07015
2    CU    07051
6    DP    07051
8    CU    07084
9    DP    07084

Je cherche à obtenir les mêmes informations mais en colonne (type de dossier) avec une ligne par commune

c'est à dire

Code insee Commune / PC / CU / DP
07009 / 3 / 1 / 14

Est ce réalisable ? si oui comment ? peut on mettre plusieurs COUNT dans le SELECT ?
Sur certains forums, on parle de faire plusieurs requetes avec des UNION. J'ai testé mais ça ne permet pas d'obtenir par commune, le nombre de dossiers pour chaque type de dossier.

Merci d'avance pour votre aide
Gui

Hors ligne

 

#2 Fri 28 April 2023 09:22

loicbcn
Participant occasionnel
Date d'inscription: 22 Jan 2018
Messages: 26

Re: Requete SQL avec plusieurs COUNT en select

Bonjour,
Il vous faut créer ces colonnes à l'aide de "sum(case when)", en incrémentant quand une condition est remplie ... c'est à dire:

Code:

select communeinseecode,
  sum(case when dossiernumtypeentiteappcode = 'PC' then 1 else 0 end) PC,
  sum(case when dossiernumtypeentiteappcode = 'CU' then 1 else 0 end) CU,
  sum(case when dossiernumtypeentiteappcode = 'DP' then 1 else 0 end) DP
from dossier d
group by communeinseecode

Dernière modification par loicbcn (Fri 28 April 2023 09:23)

Hors ligne

 

#3 Fri 28 April 2023 13:42

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

Re: Requete SQL avec plusieurs COUNT en select

Bonjour

Cela fonctionne parfaitement, un grand merci !
Gui

Hors ligne

 

#4 Fri 28 April 2023 21:08

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

Re: Requete SQL avec plusieurs COUNT en select

Bonsoir,

vous pouvez aussi utiliser l'extension PG tablefunc, qui permet de transposer des lignes en colonnes (equivalent des tableaux croisés dynamiques en Excel): https://www.postgresql.org/docs/15/tablefunc.html

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB