문자열을 잘라 추출한다.
//예시 abc@abcd.com
select email,SUBSTRING_INDEX(email,'@',1) from users
//출력결과 : abc
select email,SUBSTRING_INDEX(email,'@',1) from users
//출력결과 : abcd.com
//예시 2022-08-01 20:07:13
select created_at SUBSTRING(created_at,1,10) from orders
//출력결과 : 2020-08-01
select created_at SUBSTRING(created_at,12,8) from orders
//출력결과 : 20:07:13
경우에 따라 원하는 값을 새 필드에 출력
//포인트가 10,000이상일 때 greate 아닐 때 good을 출력하는 msg필드를 생성
select pu.user_id, pu.point,
(case when pu.point > 10000 then 'great!'
else 'Good' end) as msg
from pu.point_users pu
// 포인트 구간별 유저 수를 나타내라.
select a.lv, count(*) as cnt from (
select pu.user_id, pu.point,
(case when pu.point > 10000 then '1만 이상'
when pu.point > 5000 then '5천 이상'
else 'Good' end) as lv
from pu.point_users pu
) a
group by a.lv
// 복습) with를 이용해서 깔끔하게 표시, 위 결과와 같다.
with table1 as (
select pu.user_id, pu.point,
(case when pu.point > 10000 then '1만 이상'
when pu.point > 5000 then '5천 이상'
else 'Good' end) as lv
from pu.point_users pu
)
select a.lv, count(*) as cnt from table1
group by a.lv