[uylug-programming] Minutos trabajados por día... Ayuda con una query

Carlos M. Martinez carlosmarcelomartinez at gmail.com
Mon Mar 25 13:11:09 PDT 2013


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)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.uylug.org.uy/pipermail/uylug-programming-uylug.org.uy/attachments/20130325/3dd7eb52/attachment-0002.htm>


More information about the Uylug-programming mailing list