Re: Alternar por sexo usando select

From: Cachique <cachique(at)gmail(dot)com>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Alternar por sexo usando select
Date: 2017-07-03 14:32:11
Message-ID: CAEfeRhXJk72RC8KbejheCh6T6bYisGGBHJ4+Ri0L3PV7w3rUmA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2017-07-03 10:04 GMT-04:00 José Fermín Francisco Ferreras <
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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2017-07-03 15:05:48 Re: Tablas anidadas tarda en responder
Previous Message José Fermín Francisco Ferreras 2017-07-03 14:04:20 Alternar por sexo usando select