会社のECサイトで利用している、クレジット決済代行サービスのシステム改修が某日AM4時~6時の時間帯にかけて行われると通達があった。

改修中はクレジット決済を利用できないので、ユーザーに向けて何らかの案内をしようと考え、まずはこのシステム改修によりどの程度のユーザーへ影響が出るのかを調べてみた。

対象となるユーザーの定義

この定義は簡単で、以下の条件に該当するユーザーが対象となる。

注文した時間:AM4時~6時
支払い方法:クレジット決済

これまでの受注データの中から、上記条件に当てはまるユーザーが全体の何パーセントいるかを調査する。

特定の時間帯の受注データを抽出するSELECT文

受注情報を管理しているデータベースへアクセスし、SELECT文を書くのが一番早い。

SELECT order_date, payment_method
FROM dtb_order
WHERE
	order_date is not NULL AND
	to_char(order_date, 'hh24') >= '04' AND
	to_char(order_date, 'hh24') < '06' AND
	payment_method = 'クレジット決済'
;

上記のSQLはEC-CUBE3を想定したSELECT文だが、カラム名、テーブル名などを変えれば他のDBでも応用が可能なはず。

ポイントは、to_char関数で受注日のタイムスタンプを「24時間表記の時間」に変換している点で、これで全期間中・特定の時間帯の受注データを抽出することができる。

後は、抽出した「レコードの件数 / 全受注件数」で対象ユーザーのパーセンテージが算出できる。

ちなみに実際のDBで調べたところ、過去の対象ユーザーの割合は0.67%だったので、今回のシステム改修による影響はほぼ出ないだろうと考えられる。