Message posté par : emmamillefeuille
----------------------------------------
Bonjour,
J'utilise DBeaver pour mon traitement de BDD et je tombe aujourd'hui sur cette
erreur lorsque j'utilise l'aggrégation GROUP BY. Je crois comprendre que c'est
parce que j'appelle des colonnes dans select que je ne rappelle pas dans mon group by.
Néanmoins j'utilisais jusqu'ici le gestionnaire de données de QGIS et je n'ai
jamais eu ce soucis avant. Mais je travaillais sur des couches virtuelles, je suis là sur
une base PostgreSQL, je ne sais pas si ça change quelque chose.
-----------------
Code :
with actions_sysma_2022 as (select o.sysma_object_type as "type_objet",
a.sysma_action_type as "type_action",
count(distinct actions.sysma_action_id) as "nb_actions",
sum((case when ST_GeometryType(actions.geom) = 'ST_LineString' then
ST_Length(actions.geom)/1000 when ST_GeometryType(actions.geom) = 'ST_Polygon'
then ST_area (actions.geom)/10000 else null end)) as "emprise",
case when ST_GeometryType(actions.geom) = 'ST_LineString' then
'km_lineaire' when ST_GeometryType(actions.geom) = 'ST_Polygon' then
'ha_surface' else null end as "unites",
actions.program_year ,actions.status,actions.geom
from eau_brut.sysma_actions actions
left join eau_brut.sysma_object_type o on actions.obj_sysma_object_type_id =
o.sysma_object_type_id
left join eau_brut.sysma_action_type a on actions.sysma_action_type_id =
a.sysma_action_type_id
where group_alias = 'travaux' and actions.program_year = 2022 and actions.status
= 'termine'),
actions_sage as (select
sage.codenatzone,sage.nomzone,actions_sysma_2022.*,st_intersection(actions_sysma_2022.geom,sage.geom)geom
from actions_sysma_2022,eau_referentiel.sandre_sage as sage
where sage.codenatzone IN ('SAGE04015', 'SAGE04032', 'SAGE04033',
'SAGE03005', 'SAGE04008') and st_intersects
(actions_sysma_2022.geom,sage.geom))
select *
from actions_sage
-----------------
A ce code, il me répond que je dois ajouter la colonne o.sysma_object_type alors que je ne
fais même pas de group by dans le premier select et si j'ajoute soigneusement toutes
les colonnes de la ligne 1 dans un group by sur la ligne 10,alors i y a un affichage mais
les colonnes sont indiquées d'un point orange "pas de correspondance"...
Bref je suis un peu perdue et je n'obtiens pas ce que je cherche.
J'aimerais bien à terme, faire mon group by sur le dernier (3") select. mais déjà
faire fonctionner les deux premiers ;)
Est-ce que quelqu'un peut m'expliquer les subtilités de GROUP BY ?
Merci d'avance à tous
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=359944#p359944
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net