Je réviserai la question avec un nom approprié une fois que je serai certain de la manière de communiquer ce que je veux.
J'ai une table appelée batch_log dans laquelle les personnes démarrent et arrêtent le travail sur un lot. Chaque entrée ressemble à ceci :
"id";"batch_id";"userid";"start_time";"end_time";"time_elapsed"
"99980";"cd9e4c9e-d8bb-4983-64f4-4e777b451b93";"phastie";"2011-09-22 08:54:34";"2011-09-22 10:07:07";"01:12:33"
Ce que je veux vraiment faire, c'est sélectionner, pour une personne donnée, le temps qu'elle a suivi par rapport au temps total de ce lot, afin que je puisse lui accorder un crédit pour la partie du temps estimé qui lui revient. Y a-t-il un moyen de faire cela en SQL ?
EDIT[J'ai fini par faire ce qui suit :]
SELECT user_time_by_batch.batch_id, userid, user_time_by_batch / total_time_by_batch FROM
(
SELECT SUM(time_elapsed) user_time_by_batch, userid, batch_id
FROM batch_log
Where start_time between "2011-08-01" and now()
and end_time is not null and time_elapsed BETWEEN "00:00:00" AND "10:00:00"
and batch_id not in ("-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9", "-10", "-11", "-12", "-13")
GROUP BY batch_id, userid
) user_time_by_batch
INNER JOIN
(
SELECT SUM(time_elapsed) total_time_by_batch, batch_id
FROM batch_log
Where start_time between "2011-08-01" and now()
and end_time is not null and time_elapsed BETWEEN "00:00:00" AND "10:00:00"
and batch_id not in ("-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9", "-10", "-11", "-12", "-13")
GROUP BY batch_id
) total_time_by_batch
ON user_time_by_batch.batch_id = total_time_by_batch.batch_id