◇質問
従業員毎の残業時間の合計を計算するにはどうすればよいですか?
◇回答
《要約》コマンドとを利用することにより抽出することができます。
【データ加工処理イメージ】
【操作手順】
■操作画面1
(例では、[社員名]ごとに[残業時間]の「合計」を要約したテーブルを出力している。)
【スクリプト構文】
//[社員名]ごとに[残業時間]の「合計」を要約
OPEN “FAQ010”
SUMMARIZE ON [社員名] SUBTOTAL ALLFIELDS OTHER TO “FAQ010_要約” OPEN
Y.T
2
上記の計算方法は残業時間が数値型であることが前提であるかと思いますが、日付時刻型のhh:mm:ssのデータを集計する方法があれば、教えていただけないでしょうか?
多くの勤怠システムでは残業時間は00:30:00のように60進数の形式で登録されているため
例:00:30:00 + 00:45:00 = 01:15:00 (30分+45分=1時間15分)
要約機能を利用して月次の残業時間を集計することが目的です。
1 Like
@Y.T 様
ご質問いただきありがとうございます。
申し訳ございませんが、現行の仕様では日付時刻型の要約(集計)は対応しておりません。
そのため、日付時刻型を数値型へ変換頂き要約(集計)頂ければと思います。
下記は時刻を数値(時間)へ変換した[時間_数値]フィールドを追加するスクリプトになります。
OPEN “対象テーブル”
DEFINE FIELD [時間_数値] F DEC 2 PIC “True” POSITION 200 COMPUTED
HOUR([時刻フィールド]) + MINUTE([時刻フィールド]) / 60
ご不明点等ございましたらご連絡いただければ幸いです。
引き続きよろしくお願いいたします。
Y.T
4
計算式まで丁寧に記載いただき、ありがとうございます。
日ごとの残業時間を取り込む場合は、ご教授頂いた方法で取り込み、計算可能なのですが、月間の残業時間を取り込む場合、24時間を超えた時間を取り込むと[00:00:00]となり正常に取り込めない事象が発生しております。
解決方法をご存じでしたら、教えていただけないでしょうか?
(STRING関数の逆の関数があれば、教えていただけないでしょうか?)
例:月間残業時間 32:00:00 → 月32時間の残業
上記を取り込むと日付時刻型で取り込むと「00:00:00」となり、文字型で取り込んだとしても文字型から数値型に変換できない。
1 Like
@Y.T 様
ご質問いただきありがとうございます。
一度文字型でインポートしていただき、その後、新規フィールド追加により数値型に変換頂きます。
変換頂く際に下記のスクリプトを参照に変換いただければ幸いです。
手順①
文字型フィールドから「時間」(32)と「分数」(0)を数値型フィールドとして追加する。
OPEN “インポートテーブル”
DEFINE FIELD [時間] N PIC “True” POSITION 1 COMPUTED
SUBSTR([対象フィールド],1,2)
OPEN “インポートテーブル”
DEFINE FIELD [分数] N PIC “True” POSITION 2 COMPUTED
SUBSTR([対象フィールド],4,2)
手順②
時間と分数を合計したフィールドを追加する。
OPEN “インポートテーブル”
DEFINE FIELD [時間_数値型] F DEC 1 PIC “True” POSITION 3 COMPUTED
[時間] + [分数] / 60
手順が多くなりお手数おかけして申し訳ございませんが、ご確認の程、よろしくお願いいたします。
また、24時間以上のデータにも対応できる機能を開発中ですので、よろしくお願いいたします。
ご質問やご不明点等ございましたらご連絡いただければ幸いです。
引き続きよろしくお願いいたします。
Y.T
6
早速のご回答ありがとうございます。
ご教授頂いた方法を試させていただきます。
1 Like
@Y.T 様
また何かございましたら、ご投稿いただければ幸いです。
引き続きよろしくお願いいたします。