Re: numerar con correlativo desde 1 a n a resultado de consulta

From: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: numerar con correlativo desde 1 a n a resultado de consulta
Date: 2014-04-16 18:39:18
Message-ID: CA+KjtGdoELKxgHRm-V0joZ1CZP7o94W0=5BkXTvy_xAQG2AL0A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Guillermo

probe la consulta y efectivamente numera el problema es qu lo que quiero
numerar es cada cambio del campo sector no el correlativo tengo esto

la consulta me devuelve esto:

0901 mz1 1
0901 mz2 2
0901 mz3 3

0902 mz1 1
0902 mz2 2
0902 mz3 3

0903 mz1 1
0903 mz2 2
0903 mz3 3

0904 mz1 1
0904 mz2 2
0904 mz3 3

lo que yo necesito es esto

0901 mz1 1
0901 mz2 1
0901 mz3 1

0902 mz1 2
0902 mz2 2
0902 mz3 2

0903 mz1 3
0903 mz2 3
0903 mz3 3

0904 mz1 4
0904 mz2 4
0904 mz3 4

es el tipo de numeración que necesito pero para el resultado de una
consulta cualquiera.

al resultado de la consulta decirle por ejemplo numerar por el campo sector
y le vaya poniendo el mismo numero como la segunda lista el resultado
estaria ordenado previamente.

El 16 de abril de 2014, 12:44, Guillermo E. Villanueva <
guillermovil(at)gmail(dot)com> escribió:

> Ok, probá lo siguiente:
>
> SELECT sector, mz, row_number() OVER (PARTITION BY sector) FROM tabla;
>
> Guillermo Villanueva
>
> El 15 de abril de 2014, 10:47, jvenegasperu . <jvenegasperu(at)gmail(dot)com>escribió:
>
> Guillermo buenos dias
>>
>> tienes razon el ultimo registro deberia decir 3 por el cambio de sector
>> estoy revisando la funcion window solo estoy logrando numerar
>> correlativamente y lo que necesito es colocar el numero por cada cambio de
>> sector
>>
>> sector mz numero
>> 0901 mz1 1
>> 0901 mz2 1
>> 0901 mz3 1
>>
>> 0902 mz1 2
>> 0902 mz2 2
>> 0903 mz3 3
>>
>>
>>
>> El 15 de abril de 2014, 7:27, Guillermo E. Villanueva <
>> guillermovil(at)gmail(dot)com> escribió:
>>
>> José buen día, no manejo nada de gis pero solo comento: tu ejemplo creo
>>> que tiene un error no? el último registro tiene cambio de sector y el
>>> número sigue siendo 2.
>>> En caso de que así sea, esto es lo que estás necesitando:
>>> http://www.postgresql.org/docs/9.1/static/tutorial-window.html
>>> Saludos
>>>
>>> Guillermo Villanueva
>>>
>>>
>>>
>>> El 13 de abril de 2014, 1:01, jvenegasperu . <jvenegasperu(at)gmail(dot)com>escribió:
>>>
>>> Estimado Victor
>>>>
>>>> gracias por tu interes si entiendo tu consulta localizas un area
>>>> geografica por el perimetro lo cual esta muy bueno sin embargo respecto a
>>>> lo siguiente:
>>>>
>>>>
>>>> >pero veo que estas usando un conjuntos de campos alfanuméricos
>>>> (nomenclatura catastral) para determinar un lugar geográfico, y ademas
>>>> >tenes un campo verdaderamente geográfico. El problema con esto es que
>>>> dependes de que quien manipule los datos, lo hiciera siempre >estrictamente
>>>> bien. Si por ejemplo alguien se equivoca y pone 0901 en lugar de poner 0902
>>>> cuando imprimas el pdf del numero 1 tendrias >agregado algo que esta solo y
>>>> lejos como si fuera una isla, un polígono posiblemente asilado del resto, y
>>>> cuando imprimas el 2 tendrias un >hueco.
>>>>
>>>> tienes toda la razon podria tener una isla o un hueco en la cartografia
>>>> mi caso funciona asi el usuario por ejemplo dibuja un area geografica con
>>>> quantum gis. yo simplemente he puesto un trigger dentro de la base de datos
>>>> para que automaticamente por ejemplo un conjunto de manzanas se codifiquen
>>>> para pertenecer al sector que dibujo el usuario de esa forma se evita la
>>>> isla o el hueco en la cartografia porque la codificacion se hace en funcion
>>>> a las geometrias afectadas.
>>>>
>>>> Con lo cual se logra como dices que esten estrictamente bien
>>>> codificadas,de hecho se puede realizar la mayoria de operaciones desde el
>>>> lado espacial sin embargo la información de mi sistema debo migrarla
>>>> tambien a un sistema oracle que necesita alguna forma de identificación
>>>> para corresponder con la parte espacial por eso agrego la codificacion de
>>>> esa forma.
>>>>
>>>> Ahora Quantum Gis es capaz de generar los planos a manera de atlas de
>>>> manera automatica por esa razon si se puede lograr la numeración que
>>>> mencione los planos se obtendrian con un par de clics sin preocuparse por
>>>> el encuadre o centrado porque eso se hace automatico ya lo he probado
>>>> varias veces de hecho cuando necesito planos de diferentes lugares yo lleno
>>>> la numeración manualmente y listo.
>>>>
>>>> Comentarte por ejemplo que tener el plano de los 800 grupos
>>>> poblacionales que tiene la ciudad para un tematico x se puede tener listos
>>>> en unos 3 a 5 minutos y yo creo que un computador mas potente podria ser
>>>> hasta menos tiempo.
>>>>
>>>> claro sin contar que previamente yo hago la numeración que explique
>>>> inicialmente la cual me toma aproximadamente unos 30 minutos de trabajo
>>>> realizando los scripts para numerar manualmente directamente en el pgadmin.
>>>>
>>>> por esa razon estoy interesado en poder armar esta función que numere
>>>> cada cambio de un campo de una consulta dada.
>>>>
>>>> ya que tengo un sistema en web para consultar tambien.
>>>>
>>>> pensaba armar una especie almacen de consultas que el usuario
>>>> realiza.en la parte web y poner una opcion que diga preparar planos, cuando
>>>> le de clic a esa opcion el sistema realizaria la numeracion interna para
>>>> esa consulta que armo el usuario y luego desde quantum gis tendria sus
>>>> planos listos en una pasada.
>>>>
>>>> esa es mi idea Victor espero podamos seguir comentando estos temas ya
>>>> que no he tenido mucho contacto con desarrolladores en postgis
>>>>
>>>> saludos a todos y espero no los estemos aburriendo con tanta verborragia
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> El 12 de abril de 2014, 11:25, Victor Hugo Roumieu <vhr273(at)gmail(dot)com>escribió:
>>>>
>>>> Hola gentes del foro. Estimado Jose, no se si te comprendo y si te
>>>>> puedo ayudar, pero veo que estas usando un conjuntos de campos
>>>>> alfanuméricos (nomenclatura catastral) para determinar un lugar geográfico,
>>>>> y ademas tenes un campo verdaderamente geográfico. El problema con esto es
>>>>> que dependes de que quien manipule los datos, lo hiciera siempre
>>>>> estrictamente bien. Si por ejemplo alguien se equivoca y pone 0901 en lugar
>>>>> de poner 0902 cuando imprimas el pdf del numero 1 tendrias agregado algo
>>>>> que esta solo y lejos como si fuera una isla, un polígono posiblemente
>>>>> asilado del resto, y cuando imprimas el 2 tendrias un hueco.
>>>>>
>>>>> Siendo asi en tu caso bien podrias hacer vistas basandote unicamente
>>>>> en el dato espacial, para ello debieras primer hacerte una tabla con los
>>>>> sectores que quieres graficar, deberian tener los poligonos que marcan el
>>>>> perímetro de la zonas, por ejemplo localidades, barrios, sectores, chacras,
>>>>> quintas, etc. Luego en la vista haces un join entre las dos tablas con las
>>>>> generosas funciones que postgis te da para sql.
>>>>>
>>>>> Un caso de mi base real que es similar creo q lo tuyo es el siguiente:
>>>>>
>>>>> create view aux.mapa1_de_calles as
>>>>> select trim(cllagr.nombre) as nombre, max(cllagr.gid) as gid,
>>>>> st_union( cllagr.cll )::geometry as cll_geom
>>>>> from (select ncl.*,st_intersection( ncl.the_geom,ctstro.mapa_tematico_perimetro(
>>>>> 7 )) as cll
>>>>> from gis.nomencladorcalles ncl
>>>>> where ncl.the_geom&&ST_buffer(ctstro.mapa_tematico_perimetro( 7
>>>>> ),1) and (ncl.nombre is not null)
>>>>> order by ST_PointN(the_geom,1) desc) as cllagr
>>>>> group by 1;
>>>>>
>>>>> Donde ctstro.mapa_tematico_perimetro( 7 ) es un pl-sql que me retorna
>>>>> un perímetro.
>>>>> Obvio podrias hacer que el sector 7 fuera un parametro, o hacer un
>>>>> procedimiento o materializar la vista, etc. infinitas posibilidades
>>>>>
>>>>> Finalmente como informático viejo que piensa en modo relacional,
>>>>> (deformación profesional) arranco a arreglar las cosas con sql.
>>>>> Es posible por ello esto no te sirva, pero prefiero usar las muchas
>>>>> funciones que te dan los cartuchos espaciales de los motores grandes
>>>>> (postgres-orcale-db2) para resolver lo mas posible, antes de que entre en
>>>>> las herramientas finales com qgis, geoserver, gv-gis etc, ya que sino, no
>>>>> hay diferencia entre usar un terrible motor como postgres-postgis, con un
>>>>> simple sahpe (dbf)
>>>>>
>>>>> Saludos
>>>>> vhr
>>>>>
>>>>> -
>>>>> Enviado a la lista de correo pgsql-es-ayuda (
>>>>> pgsql-es-ayuda(at)postgresql(dot)org)
>>>>> Para cambiar tu suscripción:
>>>>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> José Mercedes Venegas Acevedo
>>>> cel: Mov. 949808846
>>>>
>>>> mails: jvenegasperu(at)php(dot)net
>>>> jvenegasperu(at)gmail(dot)com
>>>>
>>>> PHP Spanish Docs translator member.
>>>> http://www.php.net/manual/es/index.php
>>>>
>>>
>>>
>>
>>
>> --
>> José Mercedes Venegas Acevedo
>> cel: Mov. 949808846
>>
>> mails: jvenegasperu(at)php(dot)net
>> jvenegasperu(at)gmail(dot)com
>>
>> PHP Spanish Docs translator member.
>> http://www.php.net/manual/es/index.php
>>
>
>

--
José Mercedes Venegas Acevedo
cel: Mov. 949808846

mails: jvenegasperu(at)php(dot)net
jvenegasperu(at)gmail(dot)com

PHP Spanish Docs translator member.
http://www.php.net/manual/es/index.php

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jairo Graterón 2014-04-16 19:32:46 Re: numerar con correlativo desde 1 a n a resultado de consulta
Previous Message Guillermo E. Villanueva 2014-04-16 18:02:41 Re: [pgsql-es-ayuda] relación a una tabla u a otra tabla