Re: Tabla cliente y dividirla por sexo

From: Anthony <asotolongo(at)uci(dot)cu>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Tabla cliente y dividirla por sexo
Date: 2012-07-24 14:24:34
Message-ID: 500EB022.6080801@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.
>
>
> <http://www.uci.cu/>
>
> 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
>
>
> <http://www.uci.cu/>
>
>
> <http://www.uci.cu/>
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

10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION

http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Armando Venegas Pérez 2012-07-24 15:00:13 RE: Tabla cliente y dividirla por sexo
Previous Message Andres A. Mamani 2012-07-24 13:34:19 Comprender los parámetros de configuración de PgBouncer (default_pool_size)