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
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 |