MySQL(その19 平均客単価など応用)

その18から続きます。

応用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句も複数指定することができる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です