[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