テスト仕様書#
概要#
本書はクライアント向けデイリーレポートが正しく動作するかを確認するためのシステムテスト・外部結合テスト仕様書です。
外部結合・システムテスト仕様書#
前提条件#
- ローカル環境構築済みである、もしくはテスト環境であること。
- venv環境をアクティベートしていること
- pi_datamartへの接続が可能であること。
- ターミナル上で実施年、カレントディレクトリが「src」であること。
- ローカル環境の場合、src/config/.evnが「local」、テスト環境の場合「st」となっていること。
テストケース#
- ID
SEND-SEED-001 -
操作手順
- 「src/daily_report_for_client/settings/{.envで指定した環境}/client.toml」の「mail_to」に、自分の宛先を設定する。
- (エラー時の為に)「src/config/{.envで指定した環境}/email.ini」の[error_email]セクション「it_team_address」に自分の宛先を設定する。
- 下記コマンドを実行する。
python -m daily_report_for_client Seed
-
期待結果
-
自分宛に下記件名のメールが届くこと。(日付部分は昨日の日付となっていること。)
【株式会社プレステージ・コアソリューション】応答状況のご報告(2025年06月29日分)
-
メール内の数値がpi_datamartから正しく数値が取れていること。
pi_datamart上での数値の確認SQL
※{昨日の日付}部分(2か所あり)は書き換えることSELECT CAST(SUM(COALESCE(getd_resrate."nyuuden",0)) AS INTEGER) AS nyuuden_sum, CAST(SUM(COALESCE(getd_resrate."outou",0)) AS INTEGER) AS outou_sum, round(csimd.div(SUM(COALESCE(getd_resrate."outou", 0)), SUM(COALESCE(getd_resrate."nyuuden", 0))) * 100, 2) as outou_p FROM( select to_char(getd_call_detail_set.time,'YYYY/MM/DD') as "ymd" ,to_char(getd_call_detail_set.time,'HH24:MI:SS') as "hms" ,getd_call_detail_set.service_name as "service_name" ,"totalAnswered" as "outou" ,"totalAbandoned" +"totalAnswered" - (case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "nyuuden" ,"totalAbandoned" - (case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "houki" ,average_time_to_answer * "totalAnswered" as "outou_sum" ,answered as "outou_appsum" ,(case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "s_abandon" ,average_time_to_answer as "outou_ave" ,answered_within_x_seconds as "res_within_x" from csimd.getd_call_detail_set getd_call_detail_set left join csimd.getd_mst_aggattr_s getd_mst_aggattr_s on getd_call_detail_set."service_name" = getd_mst_aggattr_s."service_name" left join csimd.getd_service_performance_set getd_service_performance_set on getd_call_detail_set."service_name" = getd_service_performance_set."service_name" and getd_call_detail_set.time = getd_service_performance_set.time and getd_call_detail_set.region = getd_service_performance_set.region where getd_call_detail_set.time between TO_TIMESTAMP({昨日の日付} || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS') and TO_TIMESTAMP({昨日の日付} || ' 23:59:59', 'YYYY/MM/DD HH24:MI:SS') and getd_call_detail_set.region = 'to' and getd_call_detail_set.service_name IN (select service_name from csimd.getd_mst_servicegrp where resrate_grp_cd = 'CSIM-YO-ROOMSUPPORT-02' and enabled = '1') ) getd_resrate;
-
ステージング環境でのデイリー稼働テスト(初回リリース時のみ)#
前提条件#
- タスクスケジューラーにてステージング環境のデイリー配信設定済みであること。
- ステージング環境に最新のソースがデプロイ済みであること。
テストケース#
- ID
ST-DAILY-SEED-001 -
操作手順
なし -
期待結果
-
下記件名のメールが届くこと。(日付部分は昨日の日付となっていること。)
【株式会社プレステージ・コアソリューション】応答状況のご報告(2025年06月29日分)
-
メール内の数値がpi_datamartから正しく数値が取れていること。
pi_datamart上での数値の確認SQL
※{昨日の日付}部分(2か所あり)は書き換えることSELECT CAST(SUM(COALESCE(getd_resrate."nyuuden",0)) AS INTEGER) AS nyuuden_sum, CAST(SUM(COALESCE(getd_resrate."outou",0)) AS INTEGER) AS outou_sum, round(csimd.div(SUM(COALESCE(getd_resrate."outou", 0)), SUM(COALESCE(getd_resrate."nyuuden", 0))) * 100, 2) as outou_p FROM( select to_char(getd_call_detail_set.time,'YYYY/MM/DD') as "ymd" ,to_char(getd_call_detail_set.time,'HH24:MI:SS') as "hms" ,getd_call_detail_set.service_name as "service_name" ,"totalAnswered" as "outou" ,"totalAbandoned" +"totalAnswered" - (case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "nyuuden" ,"totalAbandoned" - (case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "houki" ,average_time_to_answer * "totalAnswered" as "outou_sum" ,answered as "outou_appsum" ,(case x_aband when '5' then cast("abandonedWithin5" as integer) when '10' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer) when '15' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer) when '20' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer) when '25' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer) when '30' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) when '40' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer) when '50' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer) when '60' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer) when '90' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer) when '120' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer) when '180' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer) when '180p' then cast("abandonedWithin5" as integer)+cast("abandonedWithin10" as integer)+cast("abandonedWithin15" as integer)+cast("abandonedWithin20" as integer)+cast("abandonedWithin25" as integer)+cast("abandonedWithin30" as integer) +cast("abandonedWithin40" as integer)+cast("abandonedWithin50" as integer)+cast("abandonedWithin60" as integer)+cast("abandonedWithin90" as integer)+cast("abandonedWithin120" as integer)+cast("abandonedWithin180" as integer)+cast("abandonedWithinInf" as integer) else '0' end) as "s_abandon" ,average_time_to_answer as "outou_ave" ,answered_within_x_seconds as "res_within_x" from csimd.getd_call_detail_set getd_call_detail_set left join csimd.getd_mst_aggattr_s getd_mst_aggattr_s on getd_call_detail_set."service_name" = getd_mst_aggattr_s."service_name" left join csimd.getd_service_performance_set getd_service_performance_set on getd_call_detail_set."service_name" = getd_service_performance_set."service_name" and getd_call_detail_set.time = getd_service_performance_set.time and getd_call_detail_set.region = getd_service_performance_set.region where getd_call_detail_set.time between TO_TIMESTAMP({昨日の日付} || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS') and TO_TIMESTAMP({昨日の日付} || ' 23:59:59', 'YYYY/MM/DD HH24:MI:SS') and getd_call_detail_set.region = 'to' and getd_call_detail_set.service_name IN (select service_name from csimd.getd_mst_servicegrp where resrate_grp_cd = 'CSIM-YO-ROOMSUPPORT-02' and enabled = '1') ) getd_resrate;
-