커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
엑셀보다 쉽고 빠른 SQL 5주차 숙제 궁금증 입니다.
엑셀보다 쉽고 빠른 SQL
5주차
북마크
백*민
댓글
3
추천
0
조회수
15
조회수
15
답변 완료

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

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


이런식으로 써도 원래의 코드와 결과 값이 같을까? 하고 다시 써본 코드인데요

원래의 코드에서는 서브쿼리를 하나를 사용하여 결과를 도출하지만

궁금해서 서브 쿼리를 두개로 작성한 코드입니다.

이렇게 하면 정답 코드와 같은 결과 값이 나와야 할 것 같은데 결과는 이미지처럼 다르더라구요

코드의 어느 부분 때문에 결과 값이 원래의 정답 코드와는 결과가 다르게 나오는 걸까요??



정답 코드의 결과 값

스파르타 즉문즉답




변경한 코드 결과값

스파르타 즉문즉답




정답 코드

SELECT

CUISINE_TYPE,

MAX(IF(AGE_GROUP = '10대', ORDER_CNT, 0)) AS '10대',

MAX(IF(AGE_GROUP = '20대', ORDER_CNT, 0)) AS '20대',

MAX(IF(AGE_GROUP = '30대', ORDER_CNT, 0)) AS '30대',

MAX(IF(AGE_GROUP = '40대', ORDER_CNT, 0)) AS '40대',

MAX(IF(AGE_GROUP = '50대', ORDER_CNT, 0)) AS '50대'

FROM

(

SELECT

CUISINE_TYPE,

CASE

WHEN AGE BETWEEN 10 AND 19 THEN '10대'

WHEN AGE BETWEEN 20 AND 29 THEN '20대'

WHEN AGE BETWEEN 30 AND 39 THEN '30대'

WHEN AGE BETWEEN 40 AND 49 THEN '40대'

WHEN AGE BETWEEN 50 AND 59 THEN '50대'

END AS 'AGE_GROUP',

COUNT(1) AS ORDER_CNT

FROM food_orders FO INNER JOIN customers C ON FO.customer_id = C.customer_id

WHERE AGE BETWEEN 10 AND 59

GROUP BY 1,2

) A

GROUP BY 1





내가 임의로 변경한 코드

SELECT

CUISINE_TYPE,

MAX(IF(AGE_GROUP = '10대', ORDER_CNT, 0)) AS '10대',

MAX(IF(AGE_GROUP = '20대', ORDER_CNT, 0)) AS '20대',

MAX(IF(AGE_GROUP = '30대', ORDER_CNT, 0)) AS '30대',

MAX(IF(AGE_GROUP = '40대', ORDER_CNT, 0)) AS '40대',

MAX(IF(AGE_GROUP = '50대', ORDER_CNT, 0)) AS '50대'

FROM

(

SELECT

CUISINE_TYPE,

CASE

WHEN AGE BETWEEN 10 AND 19 THEN '10대'

WHEN AGE BETWEEN 20 AND 29 THEN '20대'

WHEN AGE BETWEEN 30 AND 39 THEN '30대'

WHEN AGE BETWEEN 40 AND 49 THEN '40대'

WHEN AGE BETWEEN 50 AND 59 THEN '50대'

END AS 'AGE_GROUP',

ORDER_CNT

FROM

(

SELECT

CUISINE_TYPE,

AGE,

COUNT(1) AS ORDER_CNT

FROM food_orders FO INNER JOIN customers C ON FO.customer_id = C.customer_id

WHERE AGE BETWEEN 10 AND 59

GROUP BY 1,2

) A

) B

GROUP BY 1



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