Primeros 5 registros de cada empleado

08/12/2005 - 18:49 por Juan | Informe spam
Hola, necesito realizar el siguiente query, debo obtener los 5 ultimos
salarios de cada empleado.

Hasta el momento obtengo todos los salarios de los empleados de mayor
a menor solo falta cortarlos para solo obtener los últimos 5.

EMPLEADO SALARIO
1 10,000
1 9,700
1 9,200
1 9,000
1 8,500
1 8,000 ESTE NO LO NECESITO
2 15,000
2 13,900

Estoy checando el TOP pero hasta el momento no lo he logrado.

De antemano gracias.

Saludos.

Preguntas similare

Leer las respuestas

#1 Ele
08/12/2005 - 19:07 | Informe spam
Hola los salarios que muestra son uno por cada periodo de pago? (si es asi
agrega un rango), O por cada aumento durante su vida laboral ?

"Juan" escribió en el mensaje
news:
Hola, necesito realizar el siguiente query, debo obtener los 5


ultimos
salarios de cada empleado.

Hasta el momento obtengo todos los salarios de los empleados de


mayor
a menor solo falta cortarlos para solo obtener los últimos 5.

EMPLEADO SALARIO
1 10,000
1 9,700
1 9,200
1 9,000
1 8,500
1 8,000 ESTE NO LO NECESITO
2 15,000
2 13,900

Estoy checando el TOP pero hasta el momento no lo he logrado.

De antemano gracias.

Saludos.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
08/12/2005 - 19:10 | Informe spam
Trata:

select *
from t1 as a
where (
select count(*)
from t1 as b
where b.empleado = a.empleado and b.salario >= a.salario
) <= 5
go


AMB

"Juan" wrote:

Hola, necesito realizar el siguiente query, debo obtener los 5 ultimos
salarios de cada empleado.

Hasta el momento obtengo todos los salarios de los empleados de mayor
a menor solo falta cortarlos para solo obtener los últimos 5.

EMPLEADO SALARIO
1 10,000
1 9,700
1 9,200
1 9,000
1 8,500
1 8,000 ESTE NO LO NECESITO
2 15,000
2 13,900

Estoy checando el TOP pero hasta el momento no lo he logrado.

De antemano gracias.

Saludos.


Respuesta Responder a este mensaje
#3 Juan
08/12/2005 - 19:39 | Informe spam
Son por cada aumento durante su vida laboral.

Gracias por tu tiempo, saludos.


"Ele" wrote:

Hola los salarios que muestra son uno por cada periodo de pago? (si es asi
agrega un rango), O por cada aumento durante su vida laboral ?

"Juan" escribió en el mensaje
news:
> Hola, necesito realizar el siguiente query, debo obtener los 5
ultimos
> salarios de cada empleado.
>
> Hasta el momento obtengo todos los salarios de los empleados de
mayor
> a menor solo falta cortarlos para solo obtener los últimos 5.
>
> EMPLEADO SALARIO
> 1 10,000
> 1 9,700
> 1 9,200
> 1 9,000
> 1 8,500
> 1 8,000 ESTE NO LO NECESITO
> 2 15,000
> 2 13,900
>
> Estoy checando el TOP pero hasta el momento no lo he logrado.
>
> De antemano gracias.
>
> Saludos.
>
>



Respuesta Responder a este mensaje
#4 Juan
08/12/2005 - 19:44 | Informe spam
Gracias Alejandro por tu respuesta, pero al parecer tiene algo mal
porque sigue trayendo todos los sueldos y no los trunca.

Saludos.

"Alejandro Mesa" wrote:

Trata:

select *
from t1 as a
where (
select count(*)
from t1 as b
where b.empleado = a.empleado and b.salario >= a.salario
) <= 5
go


AMB

"Juan" wrote:

> Hola, necesito realizar el siguiente query, debo obtener los 5 ultimos
> salarios de cada empleado.
>
> Hasta el momento obtengo todos los salarios de los empleados de mayor
> a menor solo falta cortarlos para solo obtener los últimos 5.
>
> EMPLEADO SALARIO
> 1 10,000
> 1 9,700
> 1 9,200
> 1 9,000
> 1 8,500
> 1 8,000 ESTE NO LO NECESITO
> 2 15,000
> 2 13,900
>
> Estoy checando el TOP pero hasta el momento no lo he logrado.
>
> De antemano gracias.
>
> Saludos.
>
>
Respuesta Responder a este mensaje
#5 Alejandro Mesa
08/12/2005 - 19:58 | Informe spam
Juan,

Yo use la data que posteastes y aqui te paso el resultado:

create table t1(
empleado int,
salario money
)
go

insert into t1 values(1, 10000)
insert into t1 values(1, 9700)
insert into t1 values(1, 9200)
insert into t1 values(1, 9000)
insert into t1 values(1, 8500)
insert into t1 values(1, 8000) -- ESTE NO LO NECESITO
insert into t1 values(2, 15000)
insert into t1 values(2, 13900)
go

select *
from t1 as a
where (
select count(*)
from t1 as b
where b.empleado = a.empleado and b.salario >= a.salario
) <= 5
order by empleado asc, salario desc
go

drop table t1
go

Resultado:

empleado salario
1 10000.0000
1 9700.0000
1 9200.0000
1 9000.0000
1 8500.0000
2 15000.0000
2 13900.0000

(7 row(s) affected)

Como vez, el salario de 8000 (el sexto) no aparece en el resultado.


AMB

"Juan" wrote:


Gracias Alejandro por tu respuesta, pero al parecer tiene algo mal
porque sigue trayendo todos los sueldos y no los trunca.

Saludos.

"Alejandro Mesa" wrote:

> Trata:
>
> select *
> from t1 as a
> where (
> select count(*)
> from t1 as b
> where b.empleado = a.empleado and b.salario >= a.salario
> ) <= 5
> go
>
>
> AMB
>
> "Juan" wrote:
>
> > Hola, necesito realizar el siguiente query, debo obtener los 5 ultimos
> > salarios de cada empleado.
> >
> > Hasta el momento obtengo todos los salarios de los empleados de mayor
> > a menor solo falta cortarlos para solo obtener los últimos 5.
> >
> > EMPLEADO SALARIO
> > 1 10,000
> > 1 9,700
> > 1 9,200
> > 1 9,000
> > 1 8,500
> > 1 8,000 ESTE NO LO NECESITO
> > 2 15,000
> > 2 13,900
> >
> > Estoy checando el TOP pero hasta el momento no lo he logrado.
> >
> > De antemano gracias.
> >
> > Saludos.
> >
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida