caseを使ってみよう
ユーザ情報テーブルと、購入履歴テーブルを結合し、
購入回数ごとにランキングを付ける。
5回以上 ランクA
2回以上 ランクB
1回未満 ランクC
select users.id,count(*),
case
when count(*) >= 5 then 'A'
when count(*) >= 2 then 'B'
else 'C'
end as user_rank
from users
join orders
on users.id = orders.user_id
group by users.id;
- end は必須! ★忘れやすいので注意★
- as でカラム名を付ける
#nullの値を0にしてみよう
select products.id,products.name,
case
when sum(order_details.product_qty) is null
then 0
else sum(order_details.product_qty)
end as num
from products
left outer join
order_details
on products.id = order_details.product_id
group by products.id
left join を使うとnullになることがあり、nullだと都合が悪いときに0を入れておく。