[uylug-programming] Minutos trabajados por día... Ayuda con una query
Carlos M. Martinez
carlosmarcelomartinez at gmail.com
Mon Mar 25 13:24:47 PDT 2013
Creo que asume los 5 min (veo un INTERVAL 5 MINUTES), pero no se...
Otra forma de modelarlo que se me ocurrio luego es asumir una duracion
_maxima_ para cada evento de trabajo, digamos 5 min, y definir la
funcion 'tiempo trabajado' por cada evento asi:
Tt(t1, t0) = (t1-t0) if (t1-t0>5min) else 5min
Es decir, si el intervalo es menor de 5 min, entonces todo es tiemp
trabajado, si es mayor, asume que 'no le puede haber llevado mas de 5
min'. Obviamente los 5 min podrian ser parametrizables para ajustarse
mejor a tu realidad.
Con toda honestidad, creo que te convendria jugar un poco a sacar los
numeros de manera procedural primero (un pequeño script en python o en
perl), hacer las cuentas a mano en el script, probar que se ajusta mejor
y despues tratar de buscar el 'query magico'.
s2
~Carlos
On 3/25/13 5:12 PM, Gustavo Azambuja wrote:
> creo... (y nótese el "creo") que lo hace por el intervalo entre un
> evento y el siguiente.
>
>
> 2013/3/25 Carlos M. Martinez <carlosmarcelomartinez at gmail.com
> <mailto:carlosmarcelomartinez at gmail.com>>
>
> La veo, es demencial :D
>
> Y me sigue sin quedar claro como resuelve el tema 'duracion'.
>
> salutes !
>
> ~C.
>
>
> On 3/25/13 5:01 PM, Gustavo Azambuja wrote:
>> No, xq lo que necesito es saber la cantidad de tiempo trabajado
>> mas alla de las acciones (si fueron 1 por minuto o 3 por minuto)...
>> Les cuento q en G+ me están pasando una query enorme que tendré
>> que
>> probar... https://plus.google.com/u/0/111248427612525054266/posts/6WEozoy1RZm
>>
>> Gracias desde ya a toda la ayuda! :D
>>
>>
>>
>>
>> 2013/3/25 Carlos M. Martinez <carlosmarcelomartinez at gmail.com
>> <mailto:carlosmarcelomartinez at gmail.com>>
>>
>> Y no te sirve mas otras metrica? Estilo "cantidad de acciones
>> / hora / operador". Tal como describis tu problema tiene
>> mucho mas sentido esto que tratar de forzar una duración a
>> algo que vos queres modelar como instantáneo.
>>
>>
>>
>> On 3/25/13 4:54 PM, Gustavo Azambuja wrote:
>>> Si, para al final conseguir la cantidad de minutos
>>> trabajados durante el día de cada operador y en definitiva,
>>> de la suma de todos los operadores (me interesa la relación:
>>> minutos/día totales).
>>> El tema es que como dije antes, las acciones son
>>> instantáneas, y muchas veces un usuario tiene 2 o 3 por
>>> minuto... (t + 30 seg...) pero esto no me daría un resultado
>>> real ya que algunos usuarios sería cada 15 segundos y otros
>>> cada 50... la suma sería muy diferente...
>>>
>>> Por lo que veo, lo que tengo que hacer es calcular las
>>> diferencias entre cada intervalo y si son menores a 5
>>> minutos, sumarlas.
>>>
>>>
>>>
>>>
>>> 2013/3/25 Nicolás Sanguinetti
>>> <contacto at nicolassanguinetti.info
>>> <mailto:contacto at nicolassanguinetti.info>>
>>>
>>> Si entiendo bien, entonces, lo que querés es la unión de
>>> todos los intervalos [t, t + 5 minutos]. O sea, vos
>>> tenés que el usuario hizo acciones en:
>>>
>>> t1 = 10:00
>>> t2 = 10:02
>>> t3 = 10:06
>>> t4 = 10:15
>>>
>>> Lo que querés es llevar eso a que trabajó en [10:00 ..
>>> 10:05], [10:02 .. 10:07], [10:06 .. 10:11] y [10:15 ..
>>> 10:20]. Y la unión de todos esos intervalos es [10:00 ..
>>> 10:11], [10:15 .. 10:20].
>>>
>>> Eso es lo que querés?
>>>
>>>
>>> 2013/3/25 Chicken Urine <chickenurine at gmail.com
>>> <mailto:chickenurine at gmail.com>>
>>>
>>> Podés sacar el máximo y mínimo para un usuario y
>>> saber el tiempo total. Luego a eso le descontás el
>>> tiempo NO trabajado, que serían las tareas de más de
>>> 5 minutos o lo que sea.
>>> La verdad que así como está no se me ocurre como
>>> poder sacar un valor aproximado sin, como bien dijo
>>> Carlos, darle una duración promedio a las tareas.
>>>
>>>
>>> .:-:ChiCkENURiNE:-:.
>>> + El SPAM
>>> <http://groups.google.com/group/spam-a-lot/> tiene
>>> su lugar.
>>>
>>>
>>> 2013/3/25 Gustavo Azambuja <hola at gazambuja.com
>>> <mailto:hola at gazambuja.com>>
>>>
>>> Si, entiendo. El tema es que no puedo cambiar la
>>> estructura que está... pero me diste algo para
>>> pensar con lo de t0+5min... creo que por ahí lo
>>> soluciono.
>>> Gracias!
>>>
>>>
>>> 2013/3/25 Carlos M. Martinez
>>> <carlosmarcelomartinez at gmail.com
>>> <mailto:carlosmarcelomartinez at gmail.com>>
>>>
>>> El tema es que medir duración de algo es
>>> como que lógicamente incompatible con la
>>> hipótesis de que las acciones son
>>> instantáneas (es decir de duración 0, por lo
>>> cual la sumatoria siempre seria 0)
>>>
>>> Para calcular la cantidad de minutos
>>> ocupados en eso, se me ocurren algunas cosas:
>>>
>>> - asumir una duracion por tarea, es decir,
>>> si aprete enter en t0, la tarea duro hasta
>>> t0+5min
>>> - agregar una columna de 'fin' de la accion,
>>> tratando de medir cuando ese fin ocurre,
>>> creo que esto es lo mas razonable, ya que en
>>> realidad nada es instantáneo
>>> - asumir que la duracion de la tarea es
>>> entre enters sucesivos del mismo usuario,
>>> asumiendo que trabajan siempre, lo cual te
>>> deja abierta la duracion del ultimo 'enter'
>>> del dia
>>>
>>> - Y finalmente, pensar si en el caso de que
>>> realmente las acciones sean logicamente
>>> instantaneas, si la metrica 'minutos
>>> trabajados' tiene sentido, si no hace falta
>>> una metrica que sea 'cantidad de enters por
>>> unidad de tiempo', o algo parecido.
>>>
>>> Creo que como dice Chicken, falta algo en el
>>> modelado de tu realidad.
>>>
>>> s2
>>>
>>> ~C.
>>>
>>>
>>> On 3/25/13 11:45 AM, Gustavo Azambuja wrote:
>>>> Carlos, gracias por responder... es que no
>>>> son "tareas" mas bien son "acciones"...
>>>> Imaginen que tienen una tabla donde los
>>>> funcionarios que tienen cada ENTER que
>>>> apreto un usuario/funcionario, y en la
>>>> columna date, lo que aparece es la hora en
>>>> que apreto ENTER...
>>>>
>>>>
>>>>
>>>>
>>>> |id, user, action, date
>>>> 1, user1, a1, 2013-03-20 <tel:2013-03-20> 10:00:01
>>>> 2, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:03
>>>> 3, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:12
>>>> 4, user3, a1, 2013-03-20 <tel:2013-03-20> 10:00:20
>>>> 5, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:24
>>>> ...
>>>> 10, user3, a1, 2013-03-20 <tel:2013-03-20> 10:02:35
>>>> ...
>>>> 16, user3, a1, 2013-03-20 <tel:2013-03-20> 10:04:01
>>>>
>>>>
>>>>
>>>> |
>>>>
>>>> El usuario user1: apreto solo una vez
>>>> ENTER: 10h 00m 01s; el user2, :03s, :12s, y
>>>> :24s
>>>> Ahora, por ejemplo el user3, esta
>>>> "apretando ENTER" cada algunos cuantos
>>>> segundos, y luego del id=16 no aparece
>>>> mas... podría decir entonces que el user3
>>>> trabajó desde 10:00 hasta las 10:04 (4
>>>> minutos trabajados)
>>>>
>>>> el tema es como consigo llegar a esa
>>>> conclusion usando PHP y MySQL...
>>>>
>>>> Como dije antes, asumo que el usuario ya no
>>>> está trabajando si pasan mas de 5 minutos
>>>> sin "acciones" realizadas.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2013/3/25 Carlos M. Martinez
>>>> <carlosmarcelomartinez at gmail.com
>>>> <mailto:carlosmarcelomartinez at gmail.com>>
>>>>
>>>> Pero como definis la 'duracion' de cada
>>>> tarea ? el intervalo entre dos entradas ?
>>>>
>>>> On 3/25/13 10:50 AM, Gustavo Azambuja
>>>> wrote:
>>>>> No, la tarea es "instantanea"...
>>>>> digamos, para entender, que cada
>>>>> registro es una pulsación de ENTER en
>>>>> el teclado del usuario... sabiendo
>>>>> eso, y que jamas pasan 5 minutos sin
>>>>> dar ENTER a menos que no estén
>>>>> trabajando... como consigo saber los
>>>>> "minutos trabajados por operador" (o
>>>>> la suma de todos los operadores)?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2013/3/25 Chicken Urine
>>>>> <chickenurine at gmail.com
>>>>> <mailto:chickenurine at gmail.com>>
>>>>>
>>>>> Ok, entonces el date ese es la
>>>>> hora de inicio de la tarea, por lo
>>>>> que supongo que la duración de una
>>>>> tarea es el tiempo entre 2 registros?
>>>>>
>>>>>
>>>>> .:-:ChiCkENURiNE:-:.
>>>>> + El SPAM
>>>>> <http://groups.google.com/group/spam-a-lot/>
>>>>> tiene su lugar.
>>>>>
>>>>>
>>>>> 2013/3/25 Gustavo Azambuja
>>>>> <hola at gazambuja.com
>>>>> <mailto:hola at gazambuja.com>>
>>>>>
>>>>> La columna date tiene el
>>>>> datetime del evento (q ejecutó
>>>>> una acción)
>>>>>
>>>>> En definitiva tengo una lista
>>>>> de eventos de diferentes
>>>>> usuarios y necesito calcular
>>>>> los "minutos trabajados totales)
>>>>>
>>>>> Para el cálculo asumo que si
>>>>> el usuario no ejecuta eventos
>>>>> en 5 minutos no está trabajando.
>>>>>
>>>>> Uso MySQL, y podría completar
>>>>> el cálculo con php.
>>>>>
>>>>> El mar 25, 2013 8:20 a.m.,
>>>>> "Chicken Urine"
>>>>> <chickenurine at gmail.com
>>>>> <mailto:chickenurine at gmail.com>>
>>>>> escribió:
>>>>>
>>>>> Gustavo, no me queda muy
>>>>> claro el ejemplo. La
>>>>> columna date guarda un
>>>>> resultado de HH:MM:ss que
>>>>> llevó un tarea particular?
>>>>> O es la hora de comienzo/fin?
>>>>> Que rdbms estás
>>>>> utilizando? Ya que hay
>>>>> funciones específicas en
>>>>> cada motor para el manejo
>>>>> de tipo de datos date.
>>>>>
>>>>>
>>>>> .:-:ChiCkENURiNE:-:.
>>>>> + El SPAM
>>>>> <http://groups.google.com/group/spam-a-lot/>
>>>>> tiene su lugar.
>>>>>
>>>>>
>>>>> 2013/3/24 Gustavo Azambuja
>>>>> <hola at gazambuja.com
>>>>> <mailto:hola at gazambuja.com>>
>>>>>
>>>>> Alguien me puede
>>>>> ayudar con esta query?
>>>>>
>>>>> básicamente, necesito
>>>>> conseguir en base a
>>>>> una tabla que tiene
>>>>> acciones realizadas
>>>>> por mis usuarios
>>>>> (funcionarios) durante
>>>>> cada minuto. Ahora,
>>>>> necesito en base a esa
>>>>> tabla saber los
>>>>> "minutos trabajados"
>>>>>
>>>>> http://stackoverflow.com/questions/15606675/minutes-work-by-users-how-to-make-this-query
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> |id, user, action, date
>>>>> 1, user1, a1, 2013-03-20 <tel:2013-03-20> 10:00:01
>>>>> 2, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:03
>>>>> 3, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:12
>>>>> 4, user3, a1, 2013-03-20 <tel:2013-03-20> 10:00:20
>>>>> 5, user2, a1, 2013-03-20 <tel:2013-03-20> 10:00:24
>>>>> ....
>>>>> ...|
>>>>>
>>>>> Por ejemplo:
>>>>>
>>>>> 1. Si tengo solo un
>>>>> funcionario
>>>>> trabajando las
>>>>> 24h, tendré:
>>>>> 24h*60m = 1440
>>>>> minutos trabajados
>>>>> en el día.
>>>>> 2. Si tengo 2
>>>>> funcionarios
>>>>> durante todo el
>>>>> día (24h) tendré:
>>>>> 2880 minutos
>>>>> trabajados hoy...
>>>>> 3. Si tengo los
>>>>> mismos dos
>>>>> funcionarios, pero
>>>>> trabajando 12h
>>>>> cada uno, vuelvo a
>>>>> tener los 1440 m/día.
>>>>>
>>>>> Alguna idea de como
>>>>> podría armar una query
>>>>> que me de ésto? o como
>>>>> mucho con algo de PHP
>>>>> ademas de la query.
>>>>>
>>>>> Gracias!
>>>>>
>>>>>
>>>>> --
>>>>> Gustavo Azambuja
>>>>> http://gazambuja.com
>>>>>
>>>>> Uruguay: *091 300
>>>>> 333
>>>>> <tel:091%20300%20333>*
>>>>> (Montevideo - Mobile)
>>>>>
>>>>> _______________________________________________
>>>>> Uylug-programming
>>>>> mailing list
>>>>> Uylug-programming at listas.uylug.org.uy
>>>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Uylug-programming mailing list
>>>>> Uylug-programming at listas.uylug.org.uy
>>>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Uylug-programming mailing list
>>>>> Uylug-programming at listas.uylug.org.uy
>>>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Uylug-programming mailing list
>>>>> Uylug-programming at listas.uylug.org.uy
>>>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Gustavo Azambuja
>>>>> http://gazambuja.com
>>>>>
>>>>> Uruguay: *091 300 333
>>>>> <tel:091%20300%20333>* (Montevideo -
>>>>> Mobile)
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Uylug-programming mailing list
>>>>> Uylug-programming at listas.uylug.org.uy <mailto:Uylug-programming at listas.uylug.org.uy>
>>>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Gustavo Azambuja
>>>> http://gazambuja.com
>>>>
>>>> Uruguay: *091 300 333
>>>> <tel:091%20300%20333>* (Montevideo - Mobile)
>>>
>>>
>>>
>>>
>>> --
>>> Gustavo Azambuja
>>> http://gazambuja.com
>>>
>>> Uruguay: *091 300 333 <tel:091%20300%20333>*
>>> (Montevideo - Mobile)
>>>
>>> _______________________________________________
>>> Uylug-programming mailing list
>>> Uylug-programming at listas.uylug.org.uy
>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>
>>>
>>>
>>> _______________________________________________
>>> Uylug-programming mailing list
>>> Uylug-programming at listas.uylug.org.uy
>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>
>>>
>>>
>>> _______________________________________________
>>> Uylug-programming mailing list
>>> Uylug-programming at listas.uylug.org.uy
>>> <mailto:Uylug-programming at listas.uylug.org.uy>
>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>>
>>>
>>>
>>>
>>> --
>>> Gustavo Azambuja
>>> http://gazambuja.com
>>>
>>> Uruguay: *091 300 333* (Montevideo - Mobile)
>>>
>>>
>>> _______________________________________________
>>> Uylug-programming mailing list
>>> Uylug-programming at listas.uylug.org.uy <mailto:Uylug-programming at listas.uylug.org.uy>
>>> http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy
>>
>>
>>
>>
>> --
>> Gustavo Azambuja
>> http://gazambuja.com
>>
>> Uruguay: *091 300 333* (Montevideo - Mobile)
>
>
>
>
> --
> Gustavo Azambuja
> http://gazambuja.com
>
> Uruguay: *091 300 333* (Montevideo - Mobile)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.uylug.org.uy/pipermail/uylug-programming-uylug.org.uy/attachments/20130325/f08185d0/attachment-0002.htm>
More information about the Uylug-programming
mailing list