0

次のフィールドを持つ「hours」というデータベース テーブルがあります "employee_id" (INT), "time_on" (DATETIME), and "time_off" (DATETIME)。1 か月で最も多くの時間を記録した従業員を確認したいと考えています。

サブクエリが必要だと思っていますが、MySQL があまり得意ではなく、必要なクエリについて頭を悩ませることができません。今月からすべての行を選択したい:

"... MONTH(time_on) = ".$this_month_object->format('m')."... "

次に、これらの行で、次のようなものを使用して、作業秒数が最も高い「employee_id」フィールドを選択します。

SUM(time_to_sec(TIMEDIFF(time_off, time_on)))

ここ数時間は無駄だったので、新鮮なアイデアが必要です。

4

1 に答える 1

4

このようなもの?

SELECT employee_id, SUM(TIMEDIFF(time_off, time_on)) AS diff
FROM tbl
WHERE YEAR(time_on) = 2013
    AND MONTH(time_on) = 3
GROUP BY employee_id

デモを見る

于 2013-04-01T21:27:56.743 に答える