Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Calcular dias consecutivos en una semana

Estas en el tema de Calcular dias consecutivos en una semana en el foro de Mysql en Foros del Web. Hola a todos, mi pregunta es la siguiente: Necesito averiguar si una persona trabajo los 6 dias seguidos de una semana para que pueda ganar ...
  #1 (permalink)  
Antiguo 13/01/2010, 11:01
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Calcular dias consecutivos en una semana

Hola a todos, mi pregunta es la siguiente:

Necesito averiguar si una persona trabajo los 6 dias seguidos de una semana para que pueda ganar el septimo dia, esto debo calcularlo en una catorcena, es decir dos semanas, de ante mano agradezco la ayuda y la pronta respuesta a mi incognita.


Bueno muchas gracias por la pronta respuesta, tratare de explicar mejor mi problema

se me ha pedido calcular el total de dias trabajados por persona en una catorcena.
ya tengo la parte de la asistencia diaria donde se me guarda en una tabla el codigo del empleado y la fecha que marca la asistencia
ahora tengo que verificar si el empleado trabajo los seis dias seguidos de la primer semana, gana o tiene derecho al 7mo dia de lo contrario lo pierde
y asi para la siguiente semana.

como parametro de entrada tendria la fecha de inicio de la catorcena y luego le sumo dos semanas para tener el periodo completo.

yo puedo hacer el calculo a travez de ciclos en visual net pero no creo que sea una buena opcion.

espero haberme explicado mejor

Última edición por LENINCASCO; 14/01/2010 a las 14:21
  #2 (permalink)  
Antiguo 13/01/2010, 12:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Calcular dias consecutivos en una semana

das poca información amigo.

que tablas tienes?
que parámetro de entrada es utilizado para hacer dicho calculo?

explica mejor tu problema.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/01/2010, 13:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Calcular dias consecutivos en una semana

agrupa por idtrabajador, semana del año y año, y cuenta que haya 6 días
Código SQL:
Ver original
  1. SELECT idtrabajador, YEAR(campofecha) anio, WEEKOFYEAR(campofecha) numsemana, COUNT(*) TOTALsemanaanio
  2.  FROM tutabla GROUP BY idtrabajador, YEAR(campofecha), WEEKOFYEAR(campofecha)
  3.  HAVING TOTALsemanaanio = 6

No lo he probado, pero esa es la idea.

Última edición por jurena; 13/01/2010 a las 17:31
  #4 (permalink)  
Antiguo 14/01/2010, 15:26
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Calcular dias consecutivos en una semana

Cita:
Iniciado por jurena Ver Mensaje
agrupa por idtrabajador, semana del año y año, y cuenta que haya 6 días
Código SQL:
Ver original
  1. SELECT idtrabajador, YEAR(campofecha) anio, WEEKOFYEAR(campofecha) numsemana, COUNT(*) TOTALsemanaanio
  2.  FROM tutabla GROUP BY idtrabajador, YEAR(campofecha), WEEKOFYEAR(campofecha)
  3.  HAVING TOTALsemanaanio = 6

No lo he probado, pero esa es la idea.
Muchas Gracias jurena, la consulta que me diste no me funcionaba para lo que queria hacer, pero fue mi punto de partida para lograr mi objetivo.

asi me quedo mi consulta:

Código SQL:
Ver original
  1. SELECT codempleado,weekofyear(fecha), COUNT(*) TOTALdias,IF (COUNT(*)=6,1,0)  7mo
  2.        FROM marcacion WHERE fecha BETWEEN '2010-01-11'
  3.      AND  DATE_ADD('2010-01-11', INTERVAL 2 WEEK)-1 GROUP BY codempleado,weekofyear(fecha)

Esta me devuelve repetidos los codigos de los empleados ya que tambien esta agrupada por "weekofyear" y yo pongo que el rango de fechas sea 2 semanas, pero al pasarla a Crystal report lo unico que tenia que hacer era hacer invisible el detalle y mostrar unicamente la sumatoria de TOTALdias y del 7mo ademas de sumarlos entre ellos.

y con eso pude resolver mi inconveniente, espero les sirva mi aclaracion, y de nuevo muchas gracias por tomarse el tiempo en responderme, no se como votar o dar aplausos no se, pero si me aclaraste mi mundo gracias.

Última edición por LENINCASCO; 14/01/2010 a las 15:32
  #5 (permalink)  
Antiguo 14/01/2010, 15:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Calcular dias consecutivos en una semana

A ver si he entendido bien:
Si lo que quieres es que te busque aquellos que han trabajado 6 días en la misma semana del mismo año en un rango de fechas de dos semanas, creo que esto será mejor. Además no debería repetir nada.

Código SQL:
Ver original
  1. SELECT codempleado, YEARWEEK(fecha) numseman, COUNT(*)TOTALdias
  2.  FROM marcacion WHERE fecha BETWEEN '2010-01-11' AND DATE_ADD('2010-01-11',INTERVAL 2 WEEK)
  3.  GROUP BY codempleado, numseman HAVING TOTALdias = 6

Observa que ahora uso yearweek, que me ofrece el año y la semana del año.

Última edición por jurena; 14/01/2010 a las 16:09
  #6 (permalink)  
Antiguo 14/01/2010, 16:04
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Calcular dias consecutivos en una semana

Realmento no es que repita informacion, puesto que los registros que me da, uno corresponde a la priemer semana y el otro a la segunda.

El objetivo principal no es ver simplemente los que tienen seis dias acumulados sino que los que tengan seis se les pueda sumar un dia por semana.
  #7 (permalink)  
Antiguo 14/01/2010, 16:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Calcular dias consecutivos en una semana

Entiendo. Pero entonces quizás esto:
Código SQL:
Ver original
  1. SELECT codempleado, YEARWEEK(fecha) numseman, COUNT(*)TOTALdias, IF (COUNT(*)=6,1,0)  7mo
  2.  FROM marcacion WHERE fecha BETWEEN '2010-01-11' AND DATE_ADD('2010-01-11',INTERVAL 2 WEEK)
  3.  GROUP BY codempleado, numseman HAVING TOTALdias = 6

La diferencia es que si usas weekofyear y tienes datos de varios años, mezclarás los de la primera semana de cada año, etc. Eso lo resuelves con YEARWEEK().
  #8 (permalink)  
Antiguo 14/01/2010, 16:24
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Calcular dias consecutivos en una semana

esta bastante mejor la consulta y tienes razon con lo del annio, ahora yo necesito que me muestre todos los empleados independientemente si tienen 6 o menos dias por lo que es para una planilla, si tienes alguna idea para la planilla en general sera bienvendia..

por ahora tengo que irme del trabajo, pero seguire en contacto, y muchas gracias

Gracias por la respuesta y la dedicacion, estare visitando mas este foro talvez pueda dar mi aporte a alguien algun dia.

Etiquetas: dias, semana, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:23.