Skip site navigation (1) Skip section navigation (2)

Re[2]: numrow

From: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Gunnar Wolf <gwolf(at)gwolf(dot)org>, Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re[2]: numrow
Date: 2006-11-29 20:36:12
Message-ID: 1094033676.20061129153612@sedapal.com.pe (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
============
Con fecha Miércoles, 29 de Noviembre de 2006, 01:03:55 p.m., escribió:

> Gunnar Wolf escribió:

>> Te pongo un ejemplo simple más: En SQL tienes varias funciones
>> agregadoras, que te reducen el número de tuplas generadas, como avg(),
>> count() o sum(). ¿Por qué crees que no existe un total_so_far() que
>> vaya sumando cada uno de los renglones entregados? Porque ese tipo de
>> manipulación pertenece a la aplicación, no al RDBMS.

> Estoy totalmente de acuerdo con tu exposición de la teoría, pero
> aprovecho que has mencionado el "total_so_far" para hacer el alcance de
> que en SQL:2003 se introdujo el concepto de "windowing functions", que
> son funciones calculadas en torno a renglones adyacentes al "actual".
> (Postgres no soporta windowing functions todavia)

> Pero, claro, ROWNUM() no fue introducido para eso, sino para hacer lo
> que en Postgres hacemos con LIMIT y OFFSET, que obviamente son una
> solucion mucho mas limpia al problema ...

Yo el ROWNUM lo uso para cosas interesantes como el sgte. caso:

select to_date(nvl(min(rn)+sysdate+18,sysdate))
  from (select (rownum-1) rn
          from estados)
         where to_char(sysdate+18+rn,'D') not in (1,7)
           and not exists (select null from fiestas_nac
                            where trunc(f_fiesta) = trunc(sysdate+18+rn));

Obtiene la fecha contados a partir de ahora (18 dias, ver query), sin
contar sábados, domingos y feriados (tabla fiestas_nac). Con el rownum
saco un listado de numeros del 1 al "n", segun la cantidad de
registros de la tabla estados (podría haber sido otra tabla,,,); es
para obtener un array de números enteros...y gracias a esto puedo
obtener un array de fechas...
Que yo sepa, Oracle no asigna el rownum a cada registro, por que como
bien dicen eso sería absurdo,, el rownum se arma al "vuelo". Sin
embargo el oracle utiliza el ROWID para identificar como único cada
registro, que para el caso de tablas con Primary Keys compuestas por
varias columnas podría ser más eficiente utilizar este dato (ROWID)
para realizar actualizaciones a partir de cursores por ejemplo.
No estoy defendiendo Oracle por si acaso, sólo estoy dando mi punto de
vista...

saludos...


In response to

  • Re: numrow at 2006-11-29 18:03:55 from Alvaro Herrera

Responses

  • Re: numrow at 2006-11-29 21:09:22 from Alvaro Herrera

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2006-11-29 21:09:22
Subject: Re: numrow
Previous:From: Alvaro HerreraDate: 2006-11-29 18:03:55
Subject: Re: numrow

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group