RE: Tabla cliente y dividirla por sexo

From: SYSWARP - Carlos Enrique Perez <carlos(dot)perez(at)syswarp(dot)com(dot)ar>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
Cc: asotolongo(at)uci(dot)cu, Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Tabla cliente y dividirla por sexo
Date: 2012-07-24 18:33:40
Message-ID: 1343154820.1889.39.camel@perezc-desktop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

select
case sexo when 'M' then nombres||' '||apellidos else '' AS "varones",
case sexo when 'F' then nombres||' '||apellidos else '' AS "mujeres"
from clientes

Si haces full scan o sea que traes a todos entiendo que no vas a tener
problemas de performance.

? hembras? jajaja
-------------------------------------------------------------

Hola a Todos!!

Tengo una tabla llamada cliente

create table cliente(
codigo serial primary key,
nombres varchar(100),
apellidos varchar(100),
sexo char(1)
)

y necesito presentar los datos de la siguiente manera:

Varones Hembras

Jose Lopez Maria Jimenez
Luis Agosto Carolina Disla
Domingo Almanzar
Juan Duran

--

Carlos Enrique Perez
Direccion Syswarp SRL
www.syswarp.com.ar

"Los sistemas basados en Linux se encuentran en 446 de los 500
supercomputadores más potentes del mundo."

El mar, 24-07-2012 a las 16:11 +0000, José Fermín Francisco Ferreras
escribió:
>
>
>
> ing. José Fermín Francisco Ferreras
> San Francisco de Macorís, Rep. Dom.
>
>
>
>
>
>
>
>
> ______________________________________________________________________
> Date: Tue, 24 Jul 2012 10:24:34 -0400
> From: asotolongo(at)uci(dot)cu
> To: josefermin54(at)hotmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] Tabla cliente y dividirla por sexo
>
> El 22/07/2012 20:42, José Fermín Francisco Ferreras escribió:
>
> Gracias a Anthony y a Armando por sus respuestas!!
>
>
>
> Estuve probando la opcion de usar WITH y los resultados no me
> lo da como requiero.
> El resultado es de esta manera:
>
>
>
> with Va as (SELECT nombres||' '||apellidos AS "varones"
> FROM cliente
> WHERE sexo='M'),
> He as (SELECT nombres||' '||apellidos AS "hembras"
> FROM cliente
> WHERE sexo='F' )
>
> select Va.varones, He.hembras from Va,He
>
>
> Varones Hembras
> MICHAEL JORDAN MARIA SHARAPOVA
> MICHAEL JORDAN ANNA KOURNIKOVA
> ALBERT PUJOLS MARIA SHARAPOVA"
> ALBERT PUJOLS ANNA KOURNIKOVA"
> MIKE TYSON MARIA SHARAPOVA"
> MIKE TYSON ANNA KOURNIKOVA"
>
>
>
>
> En verdad nunca había utilizado la instrucción with.
>
>
> La parte final la modifiqué de la siguiente manera:
>
>
> select va.varones, he.hembras from Va full outer join He on
> (va.codigo=he.codigo);
>
>
> Pero el resultado tampoco es el esperado:
>
>
> Varones Hembras
> MICHAEL JORDAN
> ALBERT PUJOLS
> MIKE TYSON
>
>
> ANNA KOURNIKOVA
> MARIA SHARAPOVA
>
>
> Se necesita que salga de esta manera:
>
>
> Varones Hembras
> MICHAEL JORDAN ANNA KOURNIKOVA
> ALBERT PUJOLS MARIA SHARAPOVA
> MIKE TYSON
>
>
>
>
> Nota:
> Utilizo postgresql 9.1 en ubuntu 12.04
>
>
>
>
> ing. José Fermín Francisco Ferreras
> San Francisco de Macorís, Rep. Dom.
>
>
>
>
>
>
> ______________________________________________________________
> Date: Sun, 22 Jul 2012 12:48:43 -0400
> From: asotolongo(at)uci(dot)cu
> To: josefermin54(at)hotmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] Tabla cliente y dividirla por
> sexo
>
> El 21/07/2012 12:52, José Fermín Francisco Ferreras escribió:
>
> Hola a Todos!!
>
> Tengo una tabla llamada cliente
>
> create table cliente(
> codigo serial primary key,
> nombres varchar(100),
> apellidos varchar(100),
> sexo char(1)
> )
>
> y necesito presentar los datos de la siguiente manera:
>
> Varones Hembras
>
> Jose Lopez Maria Jimenez
> Luis Agosto Carolina Disla
> Domingo Almanzar
> Juan Duran
>
> osea los datos estan todos en una misma tabla y de
> manera desordenada y se necesita presentarlo de la
> manera anterior.
>
> Mi pregunta es:
>
> Se puede trabajar este caso con cursores y tablas
> temporales o bien podría hacerse con una consulta SQL,
> y cual es la manera más eficiente de hacerlo de los
> dos casos??
>
>
>
>
> ing. José Fermín Francisco Ferreras
> San Francisco de Macorís, Rep. Dom.
>
>
>
>
>
> Buenos días según entiendo necesitas los datos resultados en
> una misma consulta ,si estas en una versión superior a 8,4 de
> postgresql puedes utilizar las CTE con la clausula with
>
> ejemplo
> with Va as (SELECT nombres||' '||apellidos AS "varones"
> FROM cliente
> WHERE sexo='M'),
> He as (SELECT nombres||' '||apellidos AS "hembras"
> FROM cliente
> WHERE sexo='F' )
>
> select Va.varones, He.hembras from Va,He
>
>
> saludos
>
>
>
>
>
>
>
> Hola José , ya tengo algo que te puede ayudar mira vas a tener que
> usar funciones ventanas como row_number() [numera las filas por un
> orden determinado]
> y en con la clausula with realiza un full join por el id creado por el
> row_number() :D
>
>
> Aqui la posible solución :
>
> with Va as (SELECT nombre AS "varones", row_number() over (order by
> nombre) as id
> FROM cliente1
> WHERE sexo='M'),
> He as (SELECT nombre AS "hembras",row_number() over (order by
> nombre)as id
> FROM cliente1
> WHERE sexo='F' )
>
> select Va.varones, He.hembras from Va left join He using (id)
> si resultado
>
> "Anthony";"Claudia"
> "Armando";"Fina"
> "Juan";""
> "Yoan";""
> "Felipe";""
> "Cuco";""
>
>
> saludos
>
>
> Gracias por tu magistral aporte Anthony!!
>
>
>
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Víctor بيكتور Aguayo 2012-07-24 21:12:38 Consulta a un ARCHIVO DE TEXTO.
Previous Message José Fermín Francisco Ferreras 2012-07-24 16:11:26 RE: Tabla cliente y dividirla por sexo