[231108] SQLD 2과목_1장(51~64)

ese2o·2023년 11월 8일

SQLD

목록 보기
6/8

교재: SQL 자격 검정 실전 문제
2과목 제1장 - SQL 기본
51번 ~ 64번

51번

SQL1) 500+100+30+10+5 = 645
SQL2) 10+5 = 15
SQL3) 그룹의 개수 = 6
답: 3번

COUNT(*) : NULL까지 포함
COUNT(표현식) : NULL 미포함

52번

광고매체ID별로 광고시작일자가 가장 빠른 데이터를 추출하는 SQL을 작성해야 한다.

53번

3번: GROUP BY로 그룹핑된 컬럼에 대해서 HAVING 조건절을 사용해서 집계된 컬럼의 FILTER 조건으로 사용할 수가 있다. 이런 경우 HAVING 절에 집계함수가 없이도 사용할 수 있다.
4번: 중첩된 그룹함수의 경우 최종 결과값은 1건이 될 수밖에 없기에 GROUP BY절에 기술된 메뉴ID와 사용유형코드는 SELECT절에 기술될 수 없다.

집계(그룹)함수를 중첩해서 사용하면 최종 결과값은 1건이다. 여기서 AVG와 COUNT 집계함수를 중첩해서 사용하고 있다.

54번

답: 2번

55번

답: 2번
999는 0으로 취급되고, 오름차순이므로 999가 맨 앞으로 온다.

56번

답: 3번
2, 3번 모두 SELECT 절에 없는 '년' 컬럼으로 ORDER BY를 하고 있다.
2번은 행 전체 컬럼을 메모리에 로드하는 오라클의 특성 때문에 가능하다.
하지만 3번은 지역으로 GROUP BY를 하고 있기 때문에 각 지역당 존재하는 '년' 컬럼이 사라지게 된다. 따라서 불가능하다.

57번

답: 3번

ORDER BY 절에 컬럼명 대신 Alias명이나 컬럼 순서를 나타내는 정수를 혼용하여 사용할 수 있다.
GROUP BY절을 사용하는 경우 ORDER BY 절에 집계함수를 사용할 수도 있다.
DBMS마다 NULL값에 대한 정렬 순서가 다를 수 있으므로 주의하여야 한다.

58번

답: 2번

ORDER BY (CASE WHEN ID='A' THEN 1 ELSE 2 END), AMT DESC

CASE절을 이용해서 원래의 정렬 순서를 변경하였다. 1-2 순(숫자 순)으로 배열이 되고, 그 이후는 AMT DESC 순서로 배열된다.

59번

답: 4번

SELECT 문장의 실행 순서는 FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 이다.

60번

답: 4번
승리건수가 높은 순으로 3위까지 출력하되 3위의 승리건수가 동일한 팀이 있다면 함께 출력하기 위한 코드

SELECT TOP(3) WITH TIES 팀명, 승리건수

61번

답: 3번
전체 테이블 개수에서 최소 N-1개의 JOIN 조건이 필요하다.

62번

답: 4번
영화명과 배우명은 출연 테이블이 아니라 영화와 배우 테이블에서 가지고 와야 하는 속성이다. 따라서 마지막 WHERE절의 조건은

WHERE 출연료 >= 8888
AND 출연.영화번호 = 영화.영화번호
AND 출연.배우번호 = 배우.배우변호;

여야 한다.
이때 선지 1번은 SELECT절이 출연.영화명, 영화.배우명이어서 안된다.
영화명과 배우명은 각각 영화, 배우 테이블에서 가져와야 한다.

63번

답: 4번
DBMS 옵티마이져는 FROM 절에 나열된 테이블들을 최대 2개로 묶어서 JOIN 처리시킬 수 있다.

일반적으로 JOIN은 PK와 FK 값의 연관성에 의해 성립된다.
어떤 경우에는 이러한 PK, FK 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다.
EQUI JOIN은 JOIN에 관여하는 테이블 간의 컬럼 값들이 정확하게 일치하는 경우에 사용되는 방법이다.
EQUI JOIN은 '=' 연산자에 의해서만 수행되며, 그 이외의 비교 연산자를 사용하는 경우에는 모두 Non EQUI JOIN이다.
대부분 Non EQUI JOIN을 수행할 수 있지만, 때로는 설계상의 이유로 수행이 불가능한 경우도 있다.

64번

답: 3번

테이블의 본래 값은 조건에 따라 중복적으로 표시될 수 있다.
위 문제는 LIKE 연산자를 이용한 JOIN으로, 조건을 충족하는 단어는 각 조건별로 중복하여 표시되었다.

0개의 댓글