커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
5주차 과제 질문
[왕초보] 엑셀보다 쉽고 빠른 SQL v0
5주차
북마크
이*희
댓글
1
추천
0
조회수
23
조회수
23
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



피드백 :

답안의 쿼리는 내부 쿼리에서 연령대별로 데이터를 먼저 분류하여 age를 새롭게 정의하고, 각 연령대의 order_count를 미리 계산합니다. 이후 외부 쿼리에서 MAX(IF(...))로 연령대별 주문 수를 선택합니다. 서브쿼리 결과를 외부에서 MAX로 선택해 추가적인 연산을 하므로, 데이터 양이 많을 때 성능 차이가 날 수 있습니다.

각 쿼리의 연산 방식과 데이터 집계 구조가 다르기 때문에 차이가 있을 수 있습니다. 


피드백 내용대로 sql 문을 재구성했습니다.

그러나, 여전히 결과물 사진의 값과 다른 경우가 발생합니다.

그 이유를 알고 싶습니다.


이와 별개로, conact과 substr은 문자, 숫자 구분 안하고 실행할 수 있나요?

그리고 if 문은 왜 concat의 반환 값이 문자임에도, age = 10, age = 20을 판별할 수 있는 건가요?

감사합니다.



select cuisine_type,

max(if(age = 10, order_count, 0)) 10대,

max(if(age = 20, order_count, 0)) 20대,

max(if(age = 30, order_count, 0)) 30대,

max(if(age = 40, order_count, 0)) 40대,

max(if(age = 50, order_count, 0)) 50

from

(

select cuisine_type, age, count(1) order_count

from(

select customer_id,

CONCAT(SUBSTR(age, 1, 1), 0) age

from customers

where customers.age between 10 and 59

) c

inner join food_orders f on c.customer_id = f.customer_id

group by 1,2

) t

group by 1






취소
 공유
취소
댓글 0
댓글 알림
나의얼굴