Hola que tal, creo que expuse el tema mal, lo que necesito es obtener el ranking de los mejores vendedores, pongo un ejemplo de excel:
http://jldexcelsp.blogspot.mx/2011/0...or-grupos.html
Esto es lo que llevo creado.
Código MySQL:
Ver original-- ============ PASO 1=============
-- Crear una tabla temporal
select concat(a.id_trab
,'-',a.nombre
,'-',a.zona
,'-',a.ventas
)as key_2
,a.id_trab
,a.nombre
,a.zona
,a.tipo_incidencia
,a.ventas
, ifnull(a.fec_inicial
,'') fec_inicio
, ifnull(a.fec_final
,'')fec_fin
, b.lugar,
if(a.fec_inicial
,datediff(a.fec_final
,a.fec_inicial
)+1,' ')cant_dia_no_lab
, if(a.fec_final
>a.dia_hoy
,datediff(a.dia_hoy
,a.fec_inicial
)+1,' ')tot_dias_hoy
, a.dia_hoy
(select b.zona
,max(b.ventas
) maxventas
,(1) lugar
and a.ventas
=b.maxventas
;
-- ============ PASO 2 ==================
-- Para determinar los días no laborados hasta el 2013-02-15 y el total de dias de incidencia diferente a trabaja
select concat(a.id_trab
,'-',a.nombre
,'-',a.zona
,'-',a.ventas
)as key_1
,a.zona
,a.id_trab
,a.nombre
,a.tipo_incidencia
,a.ventas
, if(a.fec_inicial
,datediff(a.fec_final
,a.fec_inicial
)+1,' ')cant_dia_no_lab
, if(a.fec_final
>a.dia_hoy
,datediff(a.dia_hoy
,a.fec_inicial
)+1,' ')tot_dias_hoy
-- ============ Paso 3 ==================
-- Unir tablas del paso 1 con la del paso 2
select a.id_trab
,a.nombre
,a.zona
,a.tipo_incidencia
,a.ventas
, ifnull(b.lugar
,'')lugar
,a.fecha_ini
,a.fecha_fin
,a.cant_dia_no_lab
,a.tot_dias_hoy
, if(fecha_ini
='','trabaja','descanso')ruta
from tblfechas a
-- el dia_hoy es: 2013-02-15 sobre esa fecha fueron los calculos de las columnas cant_dia_no_lab y tot_dias_hoy
+---------+-----------+------+-----------------+--------+-------+------------+------------+-----------------+--------------+----------+
| id_trab | nombre | zona | tipo_incidencia | ventas | lugar | fecha_ini | fecha_fin | cant_dia_no_lab | tot_dias_hoy | ruta |
+---------+-----------+------+-----------------+--------+-------+------------+------------+-----------------+--------------+----------+
| 00156 | ricardo | 0015 | trabaja | 30 | 1 | | | | | trabaja |
| 00013 | armando | 0015 | trabaja | 25 | | | | | | trabaja |
| 04566 | gerardo | 0015 | incapacidad | 20 | | 2013-02-15 | 2013-02-20 | 6 | 1 | descanso |
| 02546 | jose | 0120 | vacaciones | 48 | 1 | 2013-02-10 | 2013-02-10 | 1 | | descanso |
| 01756 | francisco | 0120 | trabaja | 30 | | | | | | trabaja |
| 15460 | pedro | 3000 | trabaja | 41 | 1 | | | | | trabaja |
| 05630 | julian | 3000 | trabaja | 40 | | | | | | trabaja |
| 12222 | ulises | 3000 | vacaciones | 31 | | 2013-02-12 | 2013-02-15 | 4 | | descanso |
| 09000 | pablo | 3000 | trabaja | 30 | | | | | | trabaja |
| 12300 | jonathan | 3000 | incapacidad | 30 | | 2013-02-05 | 2013-03-05 | 29 | 11 | descanso |
+---------+-----------+------+-----------------+--------+-------+------------+------------+-----------------+--------------+----------+
10 rows
in set (0.00 sec
)
Hasta el momento esto es lo que tengo me hace falta obtener los demas ranking de los vendedores por zona de acuerdo a las ventas generadas por cada zona.
Espero que me puedan ayudar.