
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
3주차 union all 에서 질문드립니다.
union all 을 이용하여 7월과 8월 테이블을 이어주었습니다. 그런데 내부정렬이 union all은 적용 되지 않는다고 하셨고 그래서 subquery를 이용하면 된다고 강의하셨습니다. 4주차에 살펴보니 이부분에 대해서는 다루어주시지는 않으셨는데요. 일단 제가 한번 배운내용으로 쿼리를 3개를 작성해보았습니다.
3개 모두 정상적으로 작동합니다. 첫 번째 작성한 쿼리에서 질문이 있습니다.
select문에서 숫자와 문자를 동시에 출력하는 방법이 있을까요?
ex)select SUBSTRING(o.created_at,7,1) from courses c
위에 쿼리는 숫자만 출력이 되어서, 제가 원하는건 '7월' 이런식으로 문자 '월' 이 함께 출력되는 방법이 있는지 궁금합니다.
예를들어 select SUBSTRING(o.created_at,7,1) & '월' from courses c
하지만 위에 방식은 실행되지 않았습니다.
마지막 질문으로 제가 작성한 3개의 쿼리 말고 강사님께서 말하시는 서브쿼리를 이용하는 쿼리문을 올려주시면 감사하겠습니다.

1)
select SUBSTRING(o.created_at,7,1) as month, c.title, c1.week, count(*) as cnt from courses c
inner join checkins c1
on c.course_id = c1.course_id
inner join orders o
on c1.user_id = o.user_id
group by MONTH, c.title, c1.week
order by month, c.title, c1.week
2) case 이용
select case
when SUBSTRING(o.created_at,7,1) = '7' then '7월'
else '8월'
end as month,
c.title, c1.week, count(*) as cnt from courses c
inner join checkins c1
on c.course_id = c1.course_id
inner join orders o
on c1.user_id = o.user_id
group by MONTH, c.title, c1.week
order by month, c.title, c1.week
3) with 과 case 이용
with table1 as (
select
case
when SUBSTRING(o.created_at,7,1) = '7' then '7월'
else '8월'
end as month,
o.user_id
from orders o
)
select a.month,c.title, c1.week, count(*) as cnt from courses c
inner join checkins c1
on c.course_id = c1.course_id
inner join table1 a
on c1.user_id = a.user_id
group by a.month, c.title, c1.week
order by a.month, c.title, c1.week
