Re: Alternar por sexo usando select

From: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
To: Cachique <cachique(at)gmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Alternar por sexo usando select
Date: 2017-07-03 16:06:26
Message-ID: CY1PR16MB0490407E4D6FFB9ADCD0EEEAC6D60@CY1PR16MB0490.namprd16.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias hermano Cachique, me funcionó muy bien tu ayuda.

ing. Jos?? Ferm??n Francisco Ferreras
San Francisco de Macor??s, Rep. Dom.
________________________________
De: Cachique <cachique(at)gmail(dot)com>
Enviado: lunes, 3 de julio de 2017 02:32:11 p. m.
Para: José Fermín Francisco Ferreras
CC: Lista PostgreSQL
Asunto: Re: [pgsql-es-ayuda] Alternar por sexo usando select

2017-07-03 10:04 GMT-04:00 José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com<mailto:josefermin54(at)hotmail(dot)com>>:

Bueno días!

Favor ayudarme con el siguiente caso tengo una tabla de clientes donde se guarda el sexo.

Quisiera ver la forma donde yo pueda visualizar los registros de mediante un select de manera alternada.

Ejemplo:

Necesito alternar la información de la siguiente manera: presentar los datos que se alternarlos por sexo (osea primero una mujer y luego un hombre, luego una mujer y después un hombre, así sucesivamente).

nombre, apellido, sexo

juana, garcía, femenino

pedro, lopez, masculino

maría, flores, femenino

luis, jimenes, masculino

ing. Jos?? Ferm??n Francisco Ferreras
San Francisco de Macor??s, Rep. Dom.

Hola.
Puedes usar funciones de ventana (row_number()) para asignar a cada registro el número de linea y con un simple cálculo hacer que el sexo femenino tenga números impares ((n * 2) - 1) y el sexo masculino tenga números pares (n * 2). Luego ordenar basado en esta columna calculada y ya está.

Te paso un ejemplo que lo puedes modificar a tu gusto.

select
nombre,
apellido,
sexo,
case
when sexo = 'femenino' then (row_number() over (partition by sexo)) * 2 - 1
when sexo = 'masculino' then (row_number() over (partition by sexo)) * 2
end orden
from mitabla
order by orden

Saludos,

Walter

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2017-07-03 19:08:13 Re: Tablas anidadas tarda en responder
Previous Message Guillermo E. Villanueva 2017-07-03 15:05:48 Re: Tablas anidadas tarda en responder