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

Printemps des cartes 2024

#1 Wed 12 February 2014 12:21

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

[Spatialite] requete faire la somme

Bonjour,
je n'arrive plus a refaire ma requête ? alors je vous demande de l'aide.

J'ai une table contenant un champs COMMUNE, TERRITOIRE et SURFACE
Une Commune peut être dans plusieurs Territoire
Je voudrai avoir la somme des surfaces par commune :

exemple
COMMUNE | TERRITOIRE | SURFACE| SumSURFACE
     A                A                    10           30
     A                B                    20           30
     Z                A                    5             55
     Z                B                    15           55
     Z                C                    35           55


Avec cette requette : j'ai bien la somme des surface par commune

select sum (surface)
from MA_TABLE
group by "COMMUNE"


COMMUNE | SumSURFACE
     A               30
     B               10
     Z               55

Mais je voudrai l'ensemble des communes qui apartienne à plusieurs territoire et ma requette est fausse :

SELECT "COMMUNE", "TERRITOIRE", "SURFACE", "Geometry",
(select sum (surface) from  "MA_TABLE" group by Commune)
FROM "COM_CGI_DIST_NAT"


D'avance merci de votre aide

Dernière modification par mich (Wed 12 February 2014 14:22)

Hors ligne

 

#2 Wed 12 February 2014 15:47

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

Re: [Spatialite] requete faire la somme

Bonjour,

Deux options pour ce genre de requete:

1°) Une sous requete pour avoir les sommes des surfaces par commune, puis une requete pour lister toutes les communes, et joindre avec la somme des surfaces:

Code:

with sumsurf as (
    select commune, sum (surface) as surf
    from MA_TABLE
    group by "COMMUNE"
) select m.*, s.surf
from ma_table m join sumsurf s on m.commune = s.commune;

2°) Une seule requete, en utilisant les Windows functions, qui permettent de faire des groupes locaux et de conserver tous les records d'une table:

select COMMUNE, TERRITOIRE, SURFACE, sum(surface) over (partition by commune)
from matable;


Nicolas

Hors ligne

 

#3 Thu 13 February 2014 09:48

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] requete faire la somme

Bonjour Nicolas,
merci de ta réponse mais j’obtiens 2 messages d'erreurs sous spatialite_gui v1.7.1.

Pour la première requette :
Il ne reconnais pas le with : SQL error : near "with" : syntax error

Pour la seconde :
il me retourne : SQL error : near "(" : syntax error

une idée?

Hors ligne

 

#4 Thu 13 February 2014 09:54

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1220
Site web

Re: [Spatialite] requete faire la somme

Ah oui, spatialite ne doit pas supporter cette syntaxe.

Essaie ceci :

Code:

select m.*, s.surf
from ma_table m , (
    select commune, sum (surface) as surf
    from MA_TABLE
    group by "COMMUNE"
) as s WHERE m.commune = s.commune;

Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#5 Thu 13 February 2014 10:01

mich
Participant occasionnel
Lieu: Grenoble
Date d'inscription: 1 Aug 2007
Messages: 35

Re: [Spatialite] requete faire la somme

Impeccable
Merci Mathieu ;-)

Hors ligne

 

#6 Thu 13 February 2014 12:14

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

Re: [Spatialite] requete faire la somme

Ah oui pardon: suis trop postgis moi smile

Avec SQLite, effectivement, il faut une vraie sous requete wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB