Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select

Lists: pgsql-fr-generale
From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To: "'pgsql-fr-generale(at)postgresql(dot)org'" <pgsql-fr-generale(at)postgresql(dot)org>
Subject: lié un generate_series et un autre select
Date: 2010-11-01 10:01:03
Message-ID: 4CCE8FDF.8010503@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bon y a des lundis matin, où le cerveau et google, font la tête.

J'ai un truc assez bête à réaliser, et je ne m'y retrouve plus.

J'ai une table avec des x,y, je dois en sélectionné 100
Là ça marche,

select x as p0x, y as p0y,
x-10 as p1x,
y-10 as p1y,

x+10 as p2x,
y-10 as p2y,

x+10 as p3x,
y+10 as p3y,

x-10 as p4x,
y+10 as p4y

from lidar
limit 100

Maintenant je dois générer une série de kilometres bidon pour créer un jeu de tests
Pas de soucis, les 100 premiers résultats tout les 5 metres sur 5kms.

select generate_series(0, 5000, 5)::numeric(12,4) as km limit 100

Maintenant là où mon cerveau me fait faux bond ce matin, c'est comment "coller" les 2 résultats

de manière à obtenir un résultat

km,p0x,p0y,p1x,p1y ....

La difficulté vient du fait qu'il n'y a pas de colonne liée ....
Une bonne âme, un peu mieux réveillée que moi ?

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch


From: "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr>
To: "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>, <pgsql-fr-generale(at)postgresql(dot)org>
Subject: RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-01 10:38:23
Message-ID: 005701cb79b0$ea0285f0$be0791d0$@l-olive.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour

Et si on faisait comme ceci...

select axe_x.x as p0x, axe_y.y as p0y,
axe_x.x-10 as p1x,
axe_y.y-10 as p1y,

axe_x.x+10 as p2x,
axe_y.y-10 as p2y,

axe_x.x+10 as p3x,
axe_y.y+10 as p3y,

axe_x.x-10 as p4x,
axe_y.y+10 as p4y

from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit 100) axe_x,
(select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100) axe_y
limit 100

Est-ce bien ça ?

Cordialement
Olivier Ducteil

-----Message d'origine-----
De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Bruno Friedmann
Envoyé : lundi 1 novembre 2010 11:01
À : 'pgsql-fr-generale(at)postgresql(dot)org'
Objet : [pgsql-fr-generale] lié un generate_series et un autre select

Bon y a des lundis matin, où le cerveau et google, font la tête.

J'ai un truc assez bête à réaliser, et je ne m'y retrouve plus.

J'ai une table avec des x,y, je dois en sélectionné 100 Là ça marche,

select x as p0x, y as p0y,
x-10 as p1x,
y-10 as p1y,

x+10 as p2x,
y-10 as p2y,

x+10 as p3x,
y+10 as p3y,

x-10 as p4x,
y+10 as p4y

from lidar
limit 100

Maintenant je dois générer une série de kilometres bidon pour créer un jeu de tests Pas de soucis, les 100 premiers résultats tout les 5 metres sur 5kms.

select generate_series(0, 5000, 5)::numeric(12,4) as km limit 100

Maintenant là où mon cerveau me fait faux bond ce matin, c'est comment "coller" les 2 résultats

de manière à obtenir un résultat

km,p0x,p0y,p1x,p1y ....

La difficulté vient du fait qu'il n'y a pas de colonne liée ....
Une bonne âme, un peu mieux réveillée que moi ?

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch

--
Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-fr-generale


From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-01 10:53:06
Message-ID: 201011011153.06597.cousinmarc@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Le lundi 01 novembre 2010 11:01:03, Bruno Friedmann a écrit :
> Bon y a des lundis matin, où le cerveau et google, font la tête.
>
> J'ai un truc assez bête à réaliser, et je ne m'y retrouve plus.
>
> J'ai une table avec des x,y, je dois en sélectionné 100
> Là ça marche,
>
> select x as p0x, y as p0y,
> x-10 as p1x,
> y-10 as p1y,
>
> x+10 as p2x,
> y-10 as p2y,
>
> x+10 as p3x,
> y+10 as p3y,
>
> x-10 as p4x,
> y+10 as p4y
>
> from lidar
> limit 100
>
> Maintenant je dois générer une série de kilometres bidon pour créer un jeu
> de tests Pas de soucis, les 100 premiers résultats tout les 5 metres sur
> 5kms.
>
> select generate_series(0, 5000, 5)::numeric(12,4) as km limit 100
>
> Maintenant là où mon cerveau me fait faux bond ce matin, c'est comment
> "coller" les 2 résultats
>
> de manière à obtenir un résultat
>
> km,p0x,p0y,p1x,p1y ....
>
> La difficulté vient du fait qu'il n'y a pas de colonne liée ....
> Une bonne âme, un peu mieux réveillée que moi ?

En fait, ce qui m'échappe à moi, c'est les 'coller' comment ?

Quel est le critère pour joindre les deux ensembles de données ?

PS : on est encore moins réveillés de ce côté de la frontière. C'est férié :)


From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-01 11:13:00
Message-ID: 4CCEA0BC.1050608@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

On 11/01/2010 11:53 AM, Marc Cousin wrote:
> Le lundi 01 novembre 2010 11:01:03, Bruno Friedmann a écrit :
>> Bon y a des lundis matin, où le cerveau et google, font la tête.
>>
>> J'ai un truc assez bête à réaliser, et je ne m'y retrouve plus.
>>
>> J'ai une table avec des x,y, je dois en sélectionné 100
>> Là ça marche,
>>
>> select x as p0x, y as p0y,
>> x-10 as p1x,
>> y-10 as p1y,
>>
>> x+10 as p2x,
>> y-10 as p2y,
>>
>> x+10 as p3x,
>> y+10 as p3y,
>>
>> x-10 as p4x,
>> y+10 as p4y
>>
>> from lidar
>> limit 100
>>
>> Maintenant je dois générer une série de kilometres bidon pour créer un jeu
>> de tests Pas de soucis, les 100 premiers résultats tout les 5 metres sur
>> 5kms.
>>
>> select generate_series(0, 5000, 5)::numeric(12,4) as km limit 100
>>
>> Maintenant là où mon cerveau me fait faux bond ce matin, c'est comment
>> "coller" les 2 résultats
>>
>> de manière à obtenir un résultat
>>
>> km,p0x,p0y,p1x,p1y ....
>>
>> La difficulté vient du fait qu'il n'y a pas de colonne liée ....
>> Une bonne âme, un peu mieux réveillée que moi ?
>
> En fait, ce qui m'échappe à moi, c'est les 'coller' comment ?
>
> Quel est le critère pour joindre les deux ensembles de données ?
>
> PS : on est encore moins réveillés de ce côté de la frontière. C'est férié :)
>

euh oui, en fait la règle de collage serait, que la première ligne du generate_series = la première ligne du select x,y
la deuxième ... etc ..

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch
openSUSE Member
User www.ioda.net/r/osu
Blog www.ioda.net/r/blog
fsfe fellowship www.fsfe.org
GPG KEY : D5C9B751C4653227
vcard : http://it.ioda-net.ch/ioda-net.vcf


From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To:
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-01 11:17:16
Message-ID: 4CCEA1BC.3000708@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
> select axe_x.x as p0x, axe_y.y as p0y,
> axe_x.x-10 as p1x,
> axe_y.y-10 as p1y,
>
> axe_x.x+10 as p2x,
> axe_y.y-10 as p2y,
>
> axe_x.x+10 as p3x,
> axe_y.y+10 as p3y,
>
> axe_x.x-10 as p4x,
> axe_y.y+10 as p4y
>
> from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit 100) axe_x,
> (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100) axe_y
> limit 100

Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y sont générés, moi je dois juste "coller" un numéro de
kilomètre issue du generate_series à une autre requète

premier résultat
x,y,p0x,p0y....
2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;1230066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;1230066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;1230065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300

generate
km
0.0000
5.0000
10.0000

et là c'est très con je veux mettre les km comme première colone du précedent résultat

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch
openSUSE Member
User www.ioda.net/r/osu
Blog www.ioda.net/r/blog
fsfe fellowship www.fsfe.org
GPG KEY : D5C9B751C4653227
vcard : http://it.ioda-net.ch/ioda-net.vcf


From: Cédric Villemain <cedric(dot)villemain(dot)debian(at)gmail(dot)com>
To: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-01 11:25:25
Message-ID: AANLkTi=2_d5RMoQ3DuNT2tjsMu+Y9Cfyevqz7auBixRS@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>> select axe_x.x as p0x, axe_y.y as p0y,
>>  axe_x.x-10 as p1x,
>>  axe_y.y-10 as p1y,
>>
>>  axe_x.x+10 as p2x,
>>  axe_y.y-10 as p2y,
>>
>>  axe_x.x+10 as p3x,
>>  axe_y.y+10 as p3y,
>>
>>  axe_x.x-10 as p4x,
>>  axe_y.y+10 as p4y
>>
>>  from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit 100) axe_x,
>>  (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100) axe_y
>> limit 100
>
> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y sont générés, moi je dois juste "coller" un numéro de
> kilomètre issue du generate_series à une autre requète
>
>
> premier résultat
> x,y,p0x,p0y....
> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;1230066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;1230066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;1230065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>
> generate
> km
> 0.0000
> 5.0000
> 10.0000
>
> et là c'est très con je veux mettre les km comme première colone du précedent résultat

un exemple précis de la sortie attendue pourrait aider.
Si j'ai bien suivi tu veux quelque chose comme ceci :

select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;

> --
>
> Bruno Friedmann (irc:tigerfoot)
> Ioda-Net Sàrl www.ioda-net.ch
>  openSUSE Member
>    User www.ioda.net/r/osu
>    Blog www.ioda.net/r/blog
>  fsfe fellowship www.fsfe.org
> GPG KEY : D5C9B751C4653227
> vcard : http://it.ioda-net.ch/ioda-net.vcf
>
> --
> Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>

--
Cédric Villemain               2ndQuadrant
http://2ndQuadrant.fr/     PostgreSQL : Expertise, Formation et Support


From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-01 11:41:51
Message-ID: 4CCEA77F.9080605@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

On 11/01/2010 12:25 PM, Cédric Villemain wrote:
> Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>>> select axe_x.x as p0x, axe_y.y as p0y,
>>> axe_x.x-10 as p1x,
>>> axe_y.y-10 as p1y,
>>>
>>> axe_x.x+10 as p2x,
>>> axe_y.y-10 as p2y,
>>>
>>> axe_x.x+10 as p3x,
>>> axe_y.y+10 as p3y,
>>>
>>> axe_x.x-10 as p4x,
>>> axe_y.y+10 as p4y
>>>
>>> from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit 100) axe_x,
>>> (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100) axe_y
>>> limit 100
>>
>> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y sont générés, moi je dois juste "coller" un numéro de
>> kilomètre issue du generate_series à une autre requète
>>
>>
>> premier résultat
>> x,y,p0x,p0y....
>> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;1230066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
>> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;1230066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
>> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;1230065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>>
>> generate
>> km
>> 0.0000
>> 5.0000
>> 10.0000
>>
>> et là c'est très con je veux mettre les km comme première colone du précedent résultat
>
> un exemple précis de la sortie attendue pourrait aider.
> Si j'ai bien suivi tu veux quelque chose comme ceci :
>
> select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;
>

Bon la freebeer va à Cédric :-)

Joli le coup de la fonction window ( j'avais ça sur mon plan d'étude pour après pgday.eu )

Voilà la requète adaptée

select (rank() over (order by lid.p0x) ) * 5::numeric(12,4), lid.* from
(
select
x as p0x, y as p0y,
x-10 as p1x, y-10 as p1y,
x+10 as p2x, y-10 as p2y,
x+10 as p3x, y+10 as p3y,
x-10 as p4x, y+10 as p4y
from lidar
limit 100
) as lid

avec les résultats qui vont bien

5.0000;2578034.3700;1231158.6800;2578024.3700;1231148.6800;2578044.3700;1231148.6800;2578044.3700;1231168.6800;2578024.3700;1231168.6800
10.0000;2578034.3900;1231158.4700;2578024.3900;1231148.4700;2578044.3900;1231148.4700;2578044.3900;1231168.4700;2578024.3900;1231168.4700
15.0000;2578034.4100;1231158.2300;2578024.4100;1231148.2300;2578044.4100;1231148.2300;2578044.4100;1231168.2300;2578024.4100;1231168.2300
20.0000;2578034.4300;1231158.0000;2578024.4300;1231148.0000;2578044.4300;1231148.0000;2578044.4300;1231168.0000;2578024.4300;1231168.0000
25.0000;2578034.4800;1231157.9000;2578024.4800;1231147.9000;2578044.4800;1231147.9000;2578044.4800;1231167.9000;2578024.4800;1231167.9000

Superbe ...

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch
openSUSE Member
User www.ioda.net/r/osu
Blog www.ioda.net/r/blog
fsfe fellowship www.fsfe.org
GPG KEY : D5C9B751C4653227
vcard : http://it.ioda-net.ch/ioda-net.vcf


From: Cédric Villemain <cedric(dot)villemain(dot)debian(at)gmail(dot)com>
To: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-01 11:59:47
Message-ID: AANLkTi=ZdTo+V7d1bHR16HzjNbekGbHmtzU9g6Dd9GfC@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Le 1 novembre 2010 12:41, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
> On 11/01/2010 12:25 PM, Cédric Villemain wrote:
>> Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>>> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>>>> select axe_x.x as p0x, axe_y.y as p0y,
>>>>  axe_x.x-10 as p1x,
>>>>  axe_y.y-10 as p1y,
>>>>
>>>>  axe_x.x+10 as p2x,
>>>>  axe_y.y-10 as p2y,
>>>>
>>>>  axe_x.x+10 as p3x,
>>>>  axe_y.y+10 as p3y,
>>>>
>>>>  axe_x.x-10 as p4x,
>>>>  axe_y.y+10 as p4y
>>>>
>>>>  from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit 100) axe_x,
>>>>  (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100) axe_y
>>>> limit 100
>>>
>>> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y sont générés, moi je dois juste "coller" un numéro de
>>> kilomètre issue du generate_series à une autre requète
>>>
>>>
>>> premier résultat
>>> x,y,p0x,p0y....
>>> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;1230066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
>>> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;1230066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
>>> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;1230065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>>>
>>> generate
>>> km
>>> 0.0000
>>> 5.0000
>>> 10.0000
>>>
>>> et là c'est très con je veux mettre les km comme première colone du précedent résultat
>>
>> un exemple précis de la sortie attendue  pourrait aider.
>> Si j'ai bien suivi tu veux quelque chose comme ceci :
>>
>> select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;
>>
>
> Bon la freebeer va à Cédric :-)

Yeah !

>
> Joli le coup de la fonction window ( j'avais ça sur mon plan d'étude pour après pgday.eu )

Oui les WITH et CTE ca simplifie beaucoup de choses.

>
> Voilà la requète adaptée
>
> select (rank() over (order by lid.p0x) ) * 5::numeric(12,4), lid.* from
>  (
> select
>  x as p0x, y as p0y,
>  x-10 as p1x, y-10 as p1y,
>  x+10 as p2x, y-10 as p2y,
>  x+10 as p3x, y+10 as p3y,
>  x-10 as p4x, y+10 as p4y
>  from lidar
> limit 100
> ) as lid
>

la requête imbriquée est facultative (le over(order by x) se charge de 'ça') :

select (rank() over (order by x) ) * 5::numeric(12,4),
x as p0x, y as p0y,
x-10 as p1x, y-10 as p1y,
x+10 as p2x, y-10 as p2y,
x+10 as p3x, y+10 as p3y,
x-10 as p4x, y+10 as p4y
from lidar
limit 100

> avec les résultats qui vont bien
>
> 5.0000;2578034.3700;1231158.6800;2578024.3700;1231148.6800;2578044.3700;1231148.6800;2578044.3700;1231168.6800;2578024.3700;1231168.6800
> 10.0000;2578034.3900;1231158.4700;2578024.3900;1231148.4700;2578044.3900;1231148.4700;2578044.3900;1231168.4700;2578024.3900;1231168.4700
> 15.0000;2578034.4100;1231158.2300;2578024.4100;1231148.2300;2578044.4100;1231148.2300;2578044.4100;1231168.2300;2578024.4100;1231168.2300
> 20.0000;2578034.4300;1231158.0000;2578024.4300;1231148.0000;2578044.4300;1231148.0000;2578044.4300;1231168.0000;2578024.4300;1231168.0000
> 25.0000;2578034.4800;1231157.9000;2578024.4800;1231147.9000;2578044.4800;1231147.9000;2578044.4800;1231167.9000;2578024.4800;1231167.9000
>
> Superbe ...
>
>
> --
>
> Bruno Friedmann (irc:tigerfoot)
> Ioda-Net Sàrl www.ioda-net.ch
>  openSUSE Member
>    User www.ioda.net/r/osu
>    Blog www.ioda.net/r/blog
>  fsfe fellowship www.fsfe.org
> GPG KEY : D5C9B751C4653227
> vcard : http://it.ioda-net.ch/ioda-net.vcf
>
> --
> Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>

--
Cédric Villemain               2ndQuadrant
http://2ndQuadrant.fr/     PostgreSQL : Expertise, Formation et Support


From: "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr>
To: 'Cédric Villemain' <cedric(dot)villemain(dot)debian(at)gmail(dot)com>, "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>
Cc: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: RE: [pgsql-fr-generale] Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-02 00:37:50
Message-ID: 007901cb7a26$2f4a1040$8dde30c0$@l-olive.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour

Fonction "Windows" ne fonctionne qu'à partie de la version 8.4.
Hic !
J'en suis resté à la version 8.3.

Superbe fonction !
Bravo.

Cordialement
Olivier

-----Message d'origine-----
De : pgsql-fr-generale-owner(at)postgresql(dot)org
[mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Cédric
Villemain
Envoyé : lundi 1 novembre 2010 13:00
À : Bruno Friedmann
Cc : pgsql-fr-generale(at)postgresql(dot)org
Objet : [pgsql-fr-generale] Re: [pgsql-fr-generale] Re: [pgsql-fr-generale]
Re: [pgsql-fr-generale] lié un generate_series et un autre select

Le 1 novembre 2010 12:41, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
> On 11/01/2010 12:25 PM, Cédric Villemain wrote:
>> Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>>> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>>>> select axe_x.x as p0x, axe_y.y as p0y,
>>>>  axe_x.x-10 as p1x,
>>>>  axe_y.y-10 as p1y,
>>>>
>>>>  axe_x.x+10 as p2x,
>>>>  axe_y.y-10 as p2y,
>>>>
>>>>  axe_x.x+10 as p3x,
>>>>  axe_y.y+10 as p3y,
>>>>
>>>>  axe_x.x-10 as p4x,
>>>>  axe_y.y+10 as p4y
>>>>
>>>>  from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit
>>>> 100) axe_x,
>>>>  (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100)
>>>> axe_y limit 100
>>>
>>> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y
>>> sont générés, moi je dois juste "coller" un numéro de kilomètre
>>> issue du generate_series à une autre requète
>>>
>>>
>>> premier résultat
>>> x,y,p0x,p0y....
>>> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;123
>>> 0066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
>>> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;123
>>> 0066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
>>> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;123
>>> 0065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>>>
>>> generate
>>> km
>>> 0.0000
>>> 5.0000
>>> 10.0000
>>>
>>> et là c'est très con je veux mettre les km comme première colone du
>>> précedent résultat
>>
>> un exemple précis de la sortie attendue  pourrait aider.
>> Si j'ai bien suivi tu veux quelque chose comme ceci :
>>
>> select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;
>>
>
> Bon la freebeer va à Cédric :-)

Yeah !

>
> Joli le coup de la fonction window ( j'avais ça sur mon plan d'étude
> pour après pgday.eu )

Oui les WITH et CTE ca simplifie beaucoup de choses.

>
> Voilà la requète adaptée
>
> select (rank() over (order by lid.p0x) ) * 5::numeric(12,4), lid.*
> from
>  (
> select
>  x as p0x, y as p0y,
>  x-10 as p1x, y-10 as p1y,
>  x+10 as p2x, y-10 as p2y,
>  x+10 as p3x, y+10 as p3y,
>  x-10 as p4x, y+10 as p4y
>  from lidar
> limit 100
> ) as lid
>

la requête imbriquée est facultative (le over(order by x) se charge de 'ça')
:

select (rank() over (order by x) ) * 5::numeric(12,4),
x as p0x, y as p0y,
x-10 as p1x, y-10 as p1y,
x+10 as p2x, y-10 as p2y,
x+10 as p3x, y+10 as p3y,
x-10 as p4x, y+10 as p4y
from lidar
limit 100

> avec les résultats qui vont bien
>
> 5.0000;2578034.3700;1231158.6800;2578024.3700;1231148.6800;2578044.370
> 0;1231148.6800;2578044.3700;1231168.6800;2578024.3700;1231168.6800
> 10.0000;2578034.3900;1231158.4700;2578024.3900;1231148.4700;2578044.39
> 00;1231148.4700;2578044.3900;1231168.4700;2578024.3900;1231168.4700
> 15.0000;2578034.4100;1231158.2300;2578024.4100;1231148.2300;2578044.41
> 00;1231148.2300;2578044.4100;1231168.2300;2578024.4100;1231168.2300
> 20.0000;2578034.4300;1231158.0000;2578024.4300;1231148.0000;2578044.43
> 00;1231148.0000;2578044.4300;1231168.0000;2578024.4300;1231168.0000
> 25.0000;2578034.4800;1231157.9000;2578024.4800;1231147.9000;2578044.48
> 00;1231147.9000;2578044.4800;1231167.9000;2578024.4800;1231167.9000
>
> Superbe ...
>
>
> --
>
> Bruno Friedmann (irc:tigerfoot)
> Ioda-Net Sàrl www.ioda-net.ch
>  openSUSE Member
>    User www.ioda.net/r/osu
>    Blog www.ioda.net/r/blog
>  fsfe fellowship www.fsfe.org
> GPG KEY : D5C9B751C4653227
> vcard : http://it.ioda-net.ch/ioda-net.vcf
>
> --
> Sent via pgsql-fr-generale mailing list
> (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>

--
Cédric Villemain               2ndQuadrant http://2ndQuadrant.fr/    
PostgreSQL : Expertise, Formation et Support

--
Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-fr-generale


From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-03 07:27:38
Message-ID: 4CD10EEA.3030400@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Salut Olivier, je suis d'accord, même si ce qui devait être fait, a pu l'être grâce aux nouvelles versions.

Il n'en resterait pas moins intéressant pour "la science" de savoir comment faire cela de manière la plus sql qui soit.

J'avoue n'avoir pas trouvé solution satisfaisante et rapide. Mais je devais très certainement pas partir d'un bon prédicat.

Si l'on résume autrement le pb, il s'agit en fait d'ajouter une colonne issue d'un generate_series au résultat d'une requête
avec le premier résultat de la serie collé au premier résultat du subselect, sans pour autant avoir de liens (colonne) entre les
deux.

On 11/02/2010 01:37 AM, Olivier Ducteil wrote:
> Bonjour
>
> Fonction "Windows" ne fonctionne qu'à partie de la version 8.4.
> Hic !
> J'en suis resté à la version 8.3.
>
> Superbe fonction !
> Bravo.
>
> Cordialement
> Olivier
>
>
>
> -----Message d'origine-----
> De : pgsql-fr-generale-owner(at)postgresql(dot)org
> [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Cédric
> Villemain
> Envoyé : lundi 1 novembre 2010 13:00
> À : Bruno Friedmann
> Cc : pgsql-fr-generale(at)postgresql(dot)org
> Objet : [pgsql-fr-generale] Re: [pgsql-fr-generale] Re: [pgsql-fr-generale]
> Re: [pgsql-fr-generale] lié un generate_series et un autre select
>
> Le 1 novembre 2010 12:41, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>> On 11/01/2010 12:25 PM, Cédric Villemain wrote:
>>> Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>>>> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>>>>> select axe_x.x as p0x, axe_y.y as p0y,
>>>>> axe_x.x-10 as p1x,
>>>>> axe_y.y-10 as p1y,
>>>>>
>>>>> axe_x.x+10 as p2x,
>>>>> axe_y.y-10 as p2y,
>>>>>
>>>>> axe_x.x+10 as p3x,
>>>>> axe_y.y+10 as p3y,
>>>>>
>>>>> axe_x.x-10 as p4x,
>>>>> axe_y.y+10 as p4y
>>>>>
>>>>> from (select generate_series(0, 5000, 5)::numeric(12,4) as x limit
>>>>> 100) axe_x,
>>>>> (select generate_series(0, 5000, 5)::numeric(12,4) as y limit 100)
>>>>> axe_y limit 100
>>>>
>>>> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y
>>>> sont générés, moi je dois juste "coller" un numéro de kilomètre
>>>> issue du generate_series à une autre requète
>>>>
>>>>
>>>> premier résultat
>>>> x,y,p0x,p0y....
>>>> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;123
>>>> 0066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
>>>> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;123
>>>> 0066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
>>>> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;123
>>>> 0065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>>>>
>>>> generate
>>>> km
>>>> 0.0000
>>>> 5.0000
>>>> 10.0000
>>>>
>>>> et là c'est très con je veux mettre les km comme première colone du
>>>> précedent résultat
>>>
>>> un exemple précis de la sortie attendue pourrait aider.
>>> Si j'ai bien suivi tu veux quelque chose comme ceci :
>>>
>>> select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;
>>>
>>
>> Bon la freebeer va à Cédric :-)
>
> Yeah !
>
>>
>> Joli le coup de la fonction window ( j'avais ça sur mon plan d'étude
>> pour après pgday.eu )
>
> Oui les WITH et CTE ca simplifie beaucoup de choses.
>
>>
>> Voilà la requète adaptée
>>
>> select (rank() over (order by lid.p0x) ) * 5::numeric(12,4), lid.*
>> from
>> (
>> select
>> x as p0x, y as p0y,
>> x-10 as p1x, y-10 as p1y,
>> x+10 as p2x, y-10 as p2y,
>> x+10 as p3x, y+10 as p3y,
>> x-10 as p4x, y+10 as p4y
>> from lidar
>> limit 100
>> ) as lid
>>
>
> la requête imbriquée est facultative (le over(order by x) se charge de 'ça')
> :
>
> select (rank() over (order by x) ) * 5::numeric(12,4),
> x as p0x, y as p0y,
> x-10 as p1x, y-10 as p1y,
> x+10 as p2x, y-10 as p2y,
> x+10 as p3x, y+10 as p3y,
> x-10 as p4x, y+10 as p4y
> from lidar
> limit 100
>
>> avec les résultats qui vont bien
>>
>> 5.0000;2578034.3700;1231158.6800;2578024.3700;1231148.6800;2578044.370
>> 0;1231148.6800;2578044.3700;1231168.6800;2578024.3700;1231168.6800
>> 10.0000;2578034.3900;1231158.4700;2578024.3900;1231148.4700;2578044.39
>> 00;1231148.4700;2578044.3900;1231168.4700;2578024.3900;1231168.4700
>> 15.0000;2578034.4100;1231158.2300;2578024.4100;1231148.2300;2578044.41
>> 00;1231148.2300;2578044.4100;1231168.2300;2578024.4100;1231168.2300
>> 20.0000;2578034.4300;1231158.0000;2578024.4300;1231148.0000;2578044.43
>> 00;1231148.0000;2578044.4300;1231168.0000;2578024.4300;1231168.0000
>> 25.0000;2578034.4800;1231157.9000;2578024.4800;1231147.9000;2578044.48
>> 00;1231147.9000;2578044.4800;1231167.9000;2578024.4800;1231167.9000
>>
>> Superbe ...
>>
>>

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch


From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-03 08:18:03
Message-ID: m21v72zupw.fsf@2ndQuadrant.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bruno Friedmann <bruno(at)ioda-net(dot)ch> writes:
> Il n'en resterait pas moins intéressant pour "la science" de savoir
> comment faire cela de manière la plus sql qui soit.

Les window functions sont dans le standard SQL depuis 1992, il me
semble. Bientôt 20 ans. C'est donc à mon avis la solution la plus SQL
qui soit, même s'il a fallu attendre longtemps avant d'obtenir la
fonctionnalité dans notre SGBD favori.

--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support


From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Cc: Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr>, Bruno Friedmann <bruno(at)ioda-net(dot)ch>
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-03 08:30:28
Message-ID: 201011030930.28553.cousinmarc@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

The Wednesday 03 November 2010 09:18:03, Dimitri Fontaine wrote :
> Bruno Friedmann <bruno(at)ioda-net(dot)ch> writes:
> > Il n'en resterait pas moins intéressant pour "la science" de savoir
> > comment faire cela de manière la plus sql qui soit.
>
> Les window functions sont dans le standard SQL depuis 1992, il me
> semble. Bientôt 20 ans. C'est donc à mon avis la solution la plus SQL
> qui soit, même s'il a fallu attendre longtemps avant d'obtenir la
> fonctionnalité dans notre SGBD favori.

Houla, non, les window functions c'est du SQL:2003 il me semble.

Le 92, de mémoire, c'est l'époque bénie de l'apparition de la syntaxe JOIN, de
la normalisation des niveaux d'isolation.


From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: Marc Cousin <cousinmarc(at)gmail(dot)com>
Cc: pgsql-fr-generale(at)postgresql(dot)org, Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr>, Bruno Friedmann <bruno(at)ioda-net(dot)ch>
Subject: Re: lié un generate_series et un autre select
Date: 2010-11-03 08:45:23
Message-ID: m2tyjyyevw.fsf@2ndQuadrant.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Marc Cousin <cousinmarc(at)gmail(dot)com> writes:
> Houla, non, les window functions c'est du SQL:2003 il me semble.

Ah tiens oui on dirait,

http://troels.arvin.dk/db/rdbms/#select-top-n-standard

Bon mais ça reste du SQL à part entière.
--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support


From: "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr>
To: "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>, <pgsql-fr-generale(at)postgresql(dot)org>
Subject: RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-03 09:04:42
Message-ID: 003f01cb7b36$28ba75b0$7a2f6110$@l-olive.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Salut tous,

Grâce à toi, je me suis penché un peu plus sur ces nouvelles fonctionnalités.
Elles permettraient de réduire certaines de nos requêtes ; il faut "juste" basculer nos serveurs sur des versions plus récentes de PostgreSQL.
Mais laquelle choisir ?

Pour que la requête soit plus "SQL like", il suffit de créer une séquence, par exemple.

Etape 1
On crée la séquence

CREATE SEQUENCE seq_mes_lignes
INCREMENT 5
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

Etape 2 :
On lance cette requête :

SELECT setval('seq_mes_lignes ',1, true);
SELECT nextval(' seq_mes_lignes ')::numeric(12,4)-1 As numero_ligne, f.* FROM foo f
LIMIT 300;

(on initialise la séquence à chaque requête.)

Bon !
C'est un peu "bourrin", et je n'ose pas tester la charge générée par l'initialisation de la séquence à chaque requête (elle doit être de l'ordre de 50% supplémentaire par rapport à la lecture directe).

Mais c'est une option !
:)
Clair ?

Cordialement
Olivier DUCTEIL

-----Message d'origine-----
De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Bruno Friedmann
Envoyé : mercredi 3 novembre 2010 08:28
À : pgsql-fr-generale(at)postgresql(dot)org
Objet : Re: [pgsql-fr-generale] lié un generate_series et un autre select

Salut Olivier, je suis d'accord, même si ce qui devait être fait, a pu l'être grâce aux nouvelles versions.

Il n'en resterait pas moins intéressant pour "la science" de savoir comment faire cela de manière la plus sql qui soit.

J'avoue n'avoir pas trouvé solution satisfaisante et rapide. Mais je devais très certainement pas partir d'un bon prédicat.

Si l'on résume autrement le pb, il s'agit en fait d'ajouter une colonne issue d'un generate_series au résultat d'une requête avec le premier résultat de la serie collé au premier résultat du subselect, sans pour autant avoir de liens (colonne) entre les deux.

On 11/02/2010 01:37 AM, Olivier Ducteil wrote:
> Bonjour
>
> Fonction "Windows" ne fonctionne qu'à partie de la version 8.4.
> Hic !
> J'en suis resté à la version 8.3.
>
> Superbe fonction !
> Bravo.
>
> Cordialement
> Olivier
>
>
>
> -----Message d'origine-----
> De : pgsql-fr-generale-owner(at)postgresql(dot)org
> [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Cédric
> Villemain Envoyé : lundi 1 novembre 2010 13:00 À : Bruno Friedmann Cc
> : pgsql-fr-generale(at)postgresql(dot)org Objet : [pgsql-fr-generale] Re:
> [pgsql-fr-generale] Re: [pgsql-fr-generale]
> Re: [pgsql-fr-generale] lié un generate_series et un autre select
>
> Le 1 novembre 2010 12:41, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>> On 11/01/2010 12:25 PM, Cédric Villemain wrote:
>>> Le 1 novembre 2010 12:17, Bruno Friedmann <bruno(at)ioda-net(dot)ch> a écrit :
>>>> On 11/01/2010 11:38 AM, Olivier Ducteil wrote:
>>>>> select axe_x.x as p0x, axe_y.y as p0y,
>>>>> axe_x.x-10 as p1x,
>>>>> axe_y.y-10 as p1y,
>>>>>
>>>>> axe_x.x+10 as p2x,
>>>>> axe_y.y-10 as p2y,
>>>>>
>>>>> axe_x.x+10 as p3x,
>>>>> axe_y.y+10 as p3y,
>>>>>
>>>>> axe_x.x-10 as p4x,
>>>>> axe_y.y+10 as p4y
>>>>>
>>>>> from (select generate_series(0, 5000, 5)::numeric(12,4) as x
>>>>> limit
>>>>> 100) axe_x,
>>>>> (select generate_series(0, 5000, 5)::numeric(12,4) as y limit
>>>>> 100) axe_y limit 100
>>>>
>>>> Merci Olivier, mais en fait non ... avec ta requète les valeurs x,y
>>>> sont générés, moi je dois juste "coller" un numéro de kilomètre
>>>> issue du generate_series à une autre requète
>>>>
>>>>
>>>> premier résultat
>>>> x,y,p0x,p0y....
>>>> 2575205.7400;1230076.2300;2575195.7400;1230066.2300;2575215.7400;12
>>>> 3
>>>> 0066.2300;2575215.7400;1230086.2300;2575195.7400;1230086.2300
>>>> 2575205.7800;1230076.0400;2575195.7800;1230066.0400;2575215.7800;12
>>>> 3
>>>> 0066.0400;2575215.7800;1230086.0400;2575195.7800;1230086.0400
>>>> 2575205.8200;1230075.8300;2575195.8200;1230065.8300;2575215.8200;12
>>>> 3
>>>> 0065.8300;2575215.8200;1230085.8300;2575195.8200;1230085.8300
>>>>
>>>> generate
>>>> km
>>>> 0.0000
>>>> 5.0000
>>>> 10.0000
>>>>
>>>> et là c'est très con je veux mettre les km comme première colone du
>>>> précedent résultat
>>>
>>> un exemple précis de la sortie attendue pourrait aider.
>>> Si j'ai bien suivi tu veux quelque chose comme ceci :
>>>
>>> select *, (rank() over (order by id)) * 5::numeric(12,4) from foo;
>>>
>>
>> Bon la freebeer va à Cédric :-)
>
> Yeah !
>
>>
>> Joli le coup de la fonction window ( j'avais ça sur mon plan d'étude
>> pour après pgday.eu )
>
> Oui les WITH et CTE ca simplifie beaucoup de choses.
>
>>
>> Voilà la requète adaptée
>>
>> select (rank() over (order by lid.p0x) ) * 5::numeric(12,4), lid.*
>> from ( select x as p0x, y as p0y,
>> x-10 as p1x, y-10 as p1y,
>> x+10 as p2x, y-10 as p2y,
>> x+10 as p3x, y+10 as p3y,
>> x-10 as p4x, y+10 as p4y
>> from lidar
>> limit 100
>> ) as lid
>>
>
> la requête imbriquée est facultative (le over(order by x) se charge de
> 'ça')
> :
>
> select (rank() over (order by x) ) * 5::numeric(12,4),
> x as p0x, y as p0y,
> x-10 as p1x, y-10 as p1y,
> x+10 as p2x, y-10 as p2y,
> x+10 as p3x, y+10 as p3y,
> x-10 as p4x, y+10 as p4y
> from lidar
> limit 100
>
>> avec les résultats qui vont bien
>>
>> 5.0000;2578034.3700;1231158.6800;2578024.3700;1231148.6800;2578044.37
>> 0
>> 0;1231148.6800;2578044.3700;1231168.6800;2578024.3700;1231168.6800
>> 10.0000;2578034.3900;1231158.4700;2578024.3900;1231148.4700;2578044.3
>> 9
>> 00;1231148.4700;2578044.3900;1231168.4700;2578024.3900;1231168.4700
>> 15.0000;2578034.4100;1231158.2300;2578024.4100;1231148.2300;2578044.4
>> 1
>> 00;1231148.2300;2578044.4100;1231168.2300;2578024.4100;1231168.2300
>> 20.0000;2578034.4300;1231158.0000;2578024.4300;1231148.0000;2578044.4
>> 3
>> 00;1231148.0000;2578044.4300;1231168.0000;2578024.4300;1231168.0000
>> 25.0000;2578034.4800;1231157.9000;2578024.4800;1231147.9000;2578044.4
>> 8
>> 00;1231147.9000;2578044.4800;1231167.9000;2578024.4800;1231167.9000
>>
>> Superbe ...
>>
>>

--

Bruno Friedmann (irc:tigerfoot)
Ioda-Net Sàrl www.ioda-net.ch

--
Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-fr-generale


From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr>
Cc: "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>, <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-03 09:16:18
Message-ID: m262weydgd.fsf@2ndQuadrant.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

"Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr> writes:
> Grâce à toi, je me suis penché un peu plus sur ces nouvelles fonctionnalités.
> Elles permettraient de réduire certaines de nos requêtes ; il faut "juste" basculer nos serveurs sur des versions plus récentes de PostgreSQL.
> Mais laquelle choisir ?

Je dirais 9.0, mais 8.4 pourrait être raisonnable également.

> SELECT setval('seq_mes_lignes ',1, true);
> SELECT nextval(' seq_mes_lignes ')::numeric(12,4)-1 As numero_ligne, f.* FROM foo f
> Mais c'est une option !

Uniquement avec la garantie que la requête ne sera jamais lancée par
plusieurs connections en même temps. Donc à mon avis, non, ça n'est pas
une solution, c'est une source supplémentaire de problèmes.

Les solutions à base de generate_series, si très spécialisées
PostgreSQL, me semblent un meilleur choix en attendant les window
function.

--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support


From: "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr>
To: "'Dimitri Fontaine'" <dimitri(at)2ndQuadrant(dot)fr>
Cc: "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>, <pgsql-fr-generale(at)postgresql(dot)org>
Subject: RE: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-03 10:36:10
Message-ID: 005e01cb7b42$efe1ed10$cfa5c730$@l-olive.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour

Aie en effet, même dans une transaction, on peut avoir des trous, ou des effet de bord.
A moins d'y inclure la création d'une séquence temporaire ... là je rame un peu !

Par contre, je ne vois pas comment utiliser generate_series() pour le numéroter les ligne de 5 en 5.

Sachant que :
>>SELECT generate_series(0, 5000, 5)::numeric(12,4), f.* FROM foo f limit 100

.. ne fonctionne pas !

Cordialement
Olivier

-----Message d'origine-----
De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Dimitri Fontaine
Envoyé : mercredi 3 novembre 2010 10:16
À : Olivier Ducteil
Cc : 'Bruno Friedmann'; pgsql-fr-generale(at)postgresql(dot)org
Objet : Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select

"Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr> writes:
> Grâce à toi, je me suis penché un peu plus sur ces nouvelles fonctionnalités.
> Elles permettraient de réduire certaines de nos requêtes ; il faut "juste" basculer nos serveurs sur des versions plus récentes de PostgreSQL.
> Mais laquelle choisir ?

Je dirais 9.0, mais 8.4 pourrait être raisonnable également.

> SELECT setval('seq_mes_lignes ',1, true);
> SELECT nextval(' seq_mes_lignes ')::numeric(12,4)-1 As numero_ligne,
> f.* FROM foo f Mais c'est une option !

Uniquement avec la garantie que la requête ne sera jamais lancée par plusieurs connections en même temps. Donc à mon avis, non, ça n'est pas une solution, c'est une source supplémentaire de problèmes.

Les solutions à base de generate_series, si très spécialisées PostgreSQL, me semblent un meilleur choix en attendant les window function.

--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support

--
Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-fr-generale


From: Bruno Friedmann <bruno(at)ioda-net(dot)ch>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-03 12:56:41
Message-ID: 4CD15C09.1050208@ioda-net.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

PS : ne répondez qu'à la liste, ça évite les doublons :-)

generate_series marche bien
sur 8.4.5
SELECT generate_series(0, 5000, 5)::numeric(12,4) limit 10
0.0000
5.0000
10.0000
15.0000
20.0000
25.0000
30.0000
35.0000
40.0000
45.0000

et sur du 8.2

SELECT generate_series(0, 5000, 5)::numeric(12,4) limit 10
generate_series
-----------------
0.0000
5.0000
10.0000
15.0000
20.0000
25.0000
30.0000
35.0000
40.0000
45.0000
(10 lignes)

Donc là Olivier je comprends pas ton soucis.

Et merci pour les commentaires (Dimitri, Cédric) à propos des window ...

On 11/03/2010 11:36 AM, Olivier Ducteil wrote:
> Bonjour
>
> Aie en effet, même dans une transaction, on peut avoir des trous, ou des effet de bord.
> A moins d'y inclure la création d'une séquence temporaire ... là je rame un peu !
>
> Par contre, je ne vois pas comment utiliser generate_series() pour le numéroter les ligne de 5 en 5.
>
> Sachant que :
>>> SELECT generate_series(0, 5000, 5)::numeric(12,4), f.* FROM foo f limit 100
>
> .. ne fonctionne pas !
>
> Cordialement
> Olivier
>
>
> -----Message d'origine-----
> De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Dimitri Fontaine
> Envoyé : mercredi 3 novembre 2010 10:16
> À : Olivier Ducteil
> Cc : 'Bruno Friedmann'; pgsql-fr-generale(at)postgresql(dot)org
> Objet : Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select
>
> "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr> writes:
>> Grâce à toi, je me suis penché un peu plus sur ces nouvelles fonctionnalités.
>> Elles permettraient de réduire certaines de nos requêtes ; il faut "juste" basculer nos serveurs sur des versions plus récentes de PostgreSQL.
>> Mais laquelle choisir ?
>
> Je dirais 9.0, mais 8.4 pourrait être raisonnable également.
>
>> SELECT setval('seq_mes_lignes ',1, true);
>> SELECT nextval(' seq_mes_lignes ')::numeric(12,4)-1 As numero_ligne,
>> f.* FROM foo f Mais c'est une option !
>
> Uniquement avec la garantie que la requête ne sera jamais lancée par plusieurs connections en même temps. Donc à mon avis, non, ça n'est pas une solution, c'est une source supplémentaire de problèmes.
>
> Les solutions à base de generate_series, si très spécialisées PostgreSQL, me semblent un meilleur choix en attendant les window function.
>
> --
> Dimitri Fontaine
> http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
>
> --
> Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>

--

Bruno Friedmann (irc:tigerfoot)


From: SOUCHARD Jean-Michel DSIC BIP <jean-michel(dot)souchard(at)interieur(dot)gouv(dot)fr>
To: Olivier Ducteil <olivier(dot)ducteil(at)l-olive(dot)fr>
Cc: "'Dimitri Fontaine'" <dimitri(at)2ndQuadrant(dot)fr>, "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>, pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select
Date: 2010-11-03 13:51:01
Message-ID: 4CD168C5.1080906@interieur.gouv.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour,
pour numéroter de 5 en 5 (je ne connais pas le contexte, mais cela marche) :

SELECT GENERATE_SERIES FROM GENERATE_SERIES(1,100,5);

Cdt
-------- Message original --------
Sujet : [pgsql-fr-generale] RE: [pgsql-fr-generale] RE:
[pgsql-fr-generale] lié un generate_series et un autre select
De : Olivier Ducteil <olivier(dot)ducteil(at)l-olive(dot)fr>
Pour : 'Dimitri Fontaine' <dimitri(at)2ndQuadrant(dot)fr>
Copie à : "'Bruno Friedmann'" <bruno(at)ioda-net(dot)ch>,
pgsql-fr-generale(at)postgresql(dot)org
Date : 03/11/2010 11:36
> Bonjour
>
> Aie en effet, même dans une transaction, on peut avoir des trous, ou des effet de bord.
> A moins d'y inclure la création d'une séquence temporaire ... là je rame un peu !
>
> Par contre, je ne vois pas comment utiliser generate_series() pour le numéroter les ligne de 5 en 5.
>
> Sachant que :
>
>>> SELECT generate_series(0, 5000, 5)::numeric(12,4), f.* FROM foo f limit 100
>>>
>
> .. ne fonctionne pas !
>
> Cordialement
> Olivier
>
>
> -----Message d'origine-----
> De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Dimitri Fontaine
> Envoyé : mercredi 3 novembre 2010 10:16
> À : Olivier Ducteil
> Cc : 'Bruno Friedmann'; pgsql-fr-generale(at)postgresql(dot)org
> Objet : Re: [pgsql-fr-generale] RE: [pgsql-fr-generale] lié un generate_series et un autre select
>
> "Olivier Ducteil" <olivier(dot)ducteil(at)l-olive(dot)fr> writes:
>
>> Grâce à toi, je me suis penché un peu plus sur ces nouvelles fonctionnalités.
>> Elles permettraient de réduire certaines de nos requêtes ; il faut "juste" basculer nos serveurs sur des versions plus récentes de PostgreSQL.
>> Mais laquelle choisir ?
>>
>
> Je dirais 9.0, mais 8.4 pourrait être raisonnable également.
>
>
>> SELECT setval('seq_mes_lignes ',1, true);
>> SELECT nextval(' seq_mes_lignes ')::numeric(12,4)-1 As numero_ligne,
>> f.* FROM foo f Mais c'est une option !
>>
>
> Uniquement avec la garantie que la requête ne sera jamais lancée par plusieurs connections en même temps. Donc à mon avis, non, ça n'est pas une solution, c'est une source supplémentaire de problèmes.
>
> Les solutions à base de generate_series, si très spécialisées PostgreSQL, me semblent un meilleur choix en attendant les window function.
>
> --
> Dimitri Fontaine
> http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
>
> --
> Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>
>
>

--

Jean-Michel SOUCHARD
Expert SGBD
au Centre de Compétence Bases de Données

Ma ligne directe : 01.40.57.58.63
La télécopie du service : 01.40.57.56.30

jean-michel(dot)souchard(at)interieur(dot)gouv(dot)fr
<mailto:jean-michel(dot)souchard(at)interieur(dot)gouv(dot)fr>
jm(dot)souchard(at)gmail(dot)com <mailto:jean-michel(dot)souchard(at)interieur(dot)gouv(dot)fr>

Me rejoindre sur

<http://www.viadeo.com/invitation/jean-michel.souchard>
<http://fr.linkedin.com/pub/jean-michel-souchard/10/b1a/b0>

en clickant sur un des logos