応用1)全期間における平均客単価を知りたい!
補足:単価は小数第1位で四捨五入
客単価とは1回の購買によってユーザー1人当たりが支払う総額のこと。
例えばユーザーAさんがカフェで飲食をしたとき
コーヒー300円とケーキ400円を購入したとき、この場合客単価は700円
select round(avg(amount), 0) from orders o;
応用2)月別の平均客単価を調べたい!(小数第1位で四捨五入)
select date_format(order_time,'%Y%m') as order_year_month, round(avg(amount),0) as average_customer_spend from orders group by date_format(order_time,'%Y%m') order by order_year_month;
※ポイント
group by句を使って、年月ごとで集約して年月別に平均客単価を求める。
amount.order_timeには、datetime型で購入日時が入っているので
“201701”といった、日付けを指定された書式に設定するには
date_format(order_time,’%Y%m’)とすることでできる。
応用3)都道府県別平均客単価を調べたい!
補足:必要な列は、都道府県ID、都道府県名
平均客単価小数第1位で四捨五入 並び順は都道府県ID昇順
select p.id,p.name,round(avg(amount),0) as average_customer_spend from orders o inner join users u on o.user_id = u.id inner join prefectures p on u.prefecture_id = p.id group by p.id order by p.id
※ポイント
group by句で都道府県IDを集約して、round(avg(amount),0)で平均客単価を求める。inner joinで都道府県ID同士で結合させる。
応用4)都道府県別・月別平均客単価を知りたい!
必要な列は都道府県ID,都道府県名,年月,平均客単価(小数第1位で四捨五入)
並び順は都道府県id昇順、次に年月昇順
ヒント:group by句には複数の列を指定できる。
例えば group by prefecture_id, order_year_month
select p.id, p.name, date_format(o.order_time,'%Y%m') as order_year_month, round(avg(amount),0) as average_customer_spend from orders o inner join users u on o.user_id = u.id inner join prefectures p on u.prefecture_id = p.id group by p.id, date_format(o.order_time,'%Y%m') order by p.id, order_year_month;
※ポイント
order by句も複数指定することができる。