#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: 1554
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
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: 1554
Re: [Spatialite] requete faire la somme
Ah oui pardon: suis trop postgis moi
Avec SQLite, effectivement, il faut une vraie sous requete
Hors ligne