[SQL] sub query, case, table
2023. 8. 17. 12:58ㆍSQL
select user_id , name, email from users
where user_id in (
select user_id from orders
where payment_method = 'kakaopay'
)
select c.checkin_id , c2.title , c.user_id , c.likes,
(
select round(avg(likes),1) from checkins c
where course_id = c.course_id
) as course_avg
from checkins c
inner join courses c2 on c.course_id = c2.course_id
select pu.user_id, pu.point,
(case when pu.point > 10000 then '잘 하고 있어요!'
else '조금만 더 파이팅!'end) as msg
from point_users pu
select pu.user_id, pu.point,
(case when pu.point > (select avg(point) from point_users pu ) then'잘하고 있어요'
else '열심히 합시다' end) as msg
from point_users pu
select domain, count(*) as cnt from (
select SUBSTRING_INDEX(email, '@',-1) as domain from users
) a
group by domain
select * from checkins c
where comment like '%화이팅%'
select a.enrolled_id, a.done_cnt, b.total_cnt from (
select enrolled_id , count(*) as done_cnt from enrolleds_detail ed
where ed.done = 1
group by enrolled_id
) a
inner join (
select enrolled_id , count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id
) b on a.enrolled_id = b.enrolled_id
= (위와 아래의 결과는 같다)
with table1 as (
select enrolled_id , count(*) as done_cnt from enrolleds_detail
where done = 1
group by enrolled_id
),table2 as (
select enrolled_id , count(*) as total_cnt from enrolleds_detail
group by enrolled_id
)
select a.enrolled_id,
a.done_cnt,
b.total_cnt
from table1 a
inner join table2 b on a.enrolled_id = b.enrolled_id
'SQL' 카테고리의 다른 글
| [SQL] left join, inner join, group by, order by, count (0) | 2023.08.16 |
|---|---|
| [SQL] count, group by, where, like (0) | 2023.08.16 |