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 Thu 27 April 2023 16:19

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

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: 102

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: 1534

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