目次
やりたいこと
テーブルにバッチの開始時刻と終了時刻が記録されている。
ある時刻にバッチを実行した際の終了時刻を予測したいが、開始時刻によって実行時間にばらつきがある。
そこで、特定の開始時刻に絞り込んで平均実行時間を計算したい。
手順
以下のクエリを実行する。
12:00:00より前に実行されたバッチの実行秒数の平均
SELECT AVG(TIMESTAMPDIFF(SECOND, {開始DATETIME}, {終了DATETIME})) FROM {テーブル名} WHERE TIME({開始DATETIME}) < '12:00:00';
12:00:00より後に実行されたバッチの実行秒数の平均
SELECT AVG(TIMESTAMPDIFF(SECOND, {開始DATETIME}, {終了DATETIME})) FROM {テーブル名} WHERE TIME({開始DATETIME}) > '12:00:00';
08:00:00 ~ 12:00:00に実行されたバッチの実行秒数の平均
SELECT AVG(TIMESTAMPDIFF(SECOND, {開始DATETIME}, {終了DATETIME})) FROM {テーブル名} WHERE TIME({開始DATETIME}) BETWEEN '08:00:00' AND '12:00:00';
関数について
AVG()
対象の平均値を返す集約関数の1つ。
TIMESTAMPDIFF()
日付や時間の差を計算して、指定した単位で返す関数。
第1引数にはYEAR,MONTH,DAY,HOUR,MINUTE,SECONDなど、返却してほしい時間の単位を指定する。
第2引数に引く値を、第3引数には引かれる値を指定する。
DATEとDATETIMEを混在させた場合、DATEには’00:00:00’が付加される。
TIME()
DATETIMEの時間部分を抽出する関数。