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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 10 March 2020 15:36

BenB
Participant actif
Date d'inscription: 29 Dec 2015
Messages: 121

Requette pourcentage de surface

Bonjour,

Dans une base de données POSTGIS j'ai une table habitat de type polygone, j'ai besoin de connaitre pour chaque type d'habitat la somme des surfaces :

Code:

SELECT 
h.code_cb, 
c.lb_hab_fr,
SUM(round(st_area(h.geom))) AS surface,


LEFT JOIN ref_inpn.habref_cb c ON c.lb_code = h.code_cb
GROUP BY 
h.code_cb, 
c.lb_hab_fr,

C'est ok, mais j'ai aussi besoin du pourcentage que représente cette surface par rapport à l'ensemble des habitats. Je me suis orienté vers les sous-requêtes :

Code:

SELECT 
h.code_cb, 
c.lb_hab_fr,
SUM(round(st_area(h.geom))) AS surface,
(Select 
(100*surface) / (SUM(round(st_area(h.geom))))

FROM "CMB_observatoire".t_habitat h) AS test



LEFT JOIN ref_inpn.habref_cb c ON c.lb_code = h.code_cb
GROUP BY 
h.code_cb, 
c.lb_hab_fr,

Le soucis est que la colonne surface n'existe pas pour la requête ... logique. Dois-je faire la sous requête dans la formule (100*surface) / (SUM(round(st_area(h.geom))))? ou existe-t-il un autre moyen  ?

en vous remerciant.

Hors ligne

 

#2 Wed 11 March 2020 10:05

tevrard
Participant assidu
Date d'inscription: 23 May 2016
Messages: 320

Re: Requette pourcentage de surface

Tu dois pouvoir utiliser WITH
l'idée c'est de faire une/des table(s) temporaire(s) que tu vas utiliser dans un second temps.

https://docs.postgresql.fr/8.4/queries-with.html

Hors ligne

 

#3 Wed 11 March 2020 14:43

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Requette pourcentage de surface

Bonjour

Bien vu c'est ce qu'il faut faire.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB