본문 바로가기
02_STUDY/SQLD

SQL 자격검정 실전문제 풀이 해설 노랭이 52번, 53번(P.67,68)

by zestlumen 2023. 3. 30.

2021-11-27 02:31:40

 

SQL 자격검정 실전문제 풀이 해설 노랭이 52번

  • 인라인 뷰 통해 집계 함수 처리 후 해당 인라인 뷰와의 조인 수행하는 SQL문 작성
  • 인라인 뷰에서 메인 SQL의 테이블 칼럼 쓸 수 있는지 여부

FROM절에 위치하는 서브 쿼리인 인라인 뷰의 경우

FROM절이 있기에 메인 쿼리 테이블 칼럼 사용할 수 X

이는 메인쿼리 테이블 칼럼이 메인 쿼리 SELECT 사용되기 때문

 

*보기에 광고매체 ID별 최초 게시 광고명 광고 시작일자 출력

그룹-광고매체 ID , 최초-광고시작일자 MIN값

해당 인라인뷰 조인하는 SQL 찾기

 

1. 연관 서브 쿼리 활용이지만 이를 이용하기 위해 WHERE절 사용

(인라인 뷰 안에서 뷰 바깥 테이블과 조인 X)

인라인 뷰에서 메인테이블의 칼럼을 조건절로 사용- 에러

 

3. 광고 ID가 아닌 광고매체 ID를 그룹핑

 

4. 전체 칼럼에 대한 집계 X 광고매체 ID 그룹핑 이후 집계 함수 사용 필요

 

SQL 자격검정 실전문제 풀이 해설 노랭이 53번

2. WHERE절 집계 함수 X / HAVING절 집계 함수 O

GROUP BY 소그룹 정하지 않아도 집계 함수인 경우 HAVING절 사용 가능

그룹 바이없어도 집계 쿼리 가능, 있으면 그룹별 집 계고 없으면 전체 집계라고 보면 됨, HAVING 가능

GROUP BY 절 없이 HAVING절 사용 >> HAVING조건은 검색 조건 충족시키는 모든 행에 적용됨

즉, 검색조건에 맞는 모든 행이 단일 그룹을 형성

WHERE절 조차 없으면 테이블이 하나의 그룹

또한 HAVING 절은 WHERE절과 비교했을 때 조건을 주는 건 유사하지만

HAVING절은 그룹 함수 포함 가능

- AVG() 함수 / WHERE절에서는 AVG(주문금액)>100; 사용 불가

 

3. GROUP BY 그룹핑된 칼럼에 대해 HAVING 조건절 사용 시

집계된 칼럼의 FILTER조건으로 사용할 수 있다.

이런 경우 HAVING절에 집계 함수 없이도 사용 가능.

 

4.AVG(COUNT(*))메뉴 ID, 사용 유형 코드 개수(COUNT) 그 개수 평균 구하는 거기 때문에

평균값 하나만 나옴중첩된 그룹 함수의 경우 최종 결괏값은 1건이 될 수밖에 없기에

GROUP BY절에 기술된 메뉴와 ID 사용 유형 코드는 SELECT절에 기술될 수 없다. 

 

*집계 함수 중첩 사용 

-집계라는 건 여러 건 하나로 묶어서 보여줌 

-여러 건 하나로 표현하면서 또 여러 개 같이 표현 불가 

-메뉴 ID별 건수 전체 평균은 하나의 값으로 표현됨 

-하나의 값에 여러개 메뉴 ID 같이 표현 X 

(원래 인라인 뷰 이용 두 번에 걸쳐야 할 그룹 바이 한 번에 표현)