책 내용 질문하기
2019 정보처리기사 실기 2권 118, 134 페이지 질문이요!
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
118,134
조회수
398
작성일
2019-06-17
작성자
탈퇴*원
첨부파일

Q1.

118페이지의 문제 1번에서 select문 정답을 보면 제품.제품코드, 제품.제품명, 판매.수량 이런식으로

테이블명과 함께 써져있는데 열 이름이 겹치지 않으니 굳이 테이블명을 쓸 필요가 없지않나요? 아래의 

where절도 같은 맥락이라 열 이름이 겹치지 않더라도 테이블명을 꼭 써야하는 건지 궁금합니다!

 

Q2.

134페이지의 문제 17번에서 where절에 하위질의?를 통해 총액의 최댓값을 출력한 후 다시 select문으

로 검색하는 방식으로 답이 나와있는데 그냥 == select 상호, max(총액) as 총액 from 거래내역 ==

이런식으로 쓰는 건 잘못된건가요? 

답변
2019-06-18 10:13:08

안녕하세요 길벗수험서 운영팀입니다.

 

[1]

예, 생략할 수 있습니다.

말씀하신대로 필드명(속성명)이 from에 기재된 테이블에서 겹치지 않는다면 '[테이블명].'은 생략 가능합니다. 물론 where절도 동일하게 생략 가능합니다.

 

[2]

네, 정상적인 결과를 출력하지 못합니다.

이거는 약간 복잡한 설명이 될 수 있겠네요.

 

먼저, 그룹함수들인 count, max, min, avg, sum 등은 group by가 없으면 테이블 전체에 대한 계산 값을 반환합니다.

134쪽의 <거래내역> 테이블에서 max(총액)이라면 948000이 되겠네요.

문제는 이상태에서 다른 필드와 함께 출력한다고 해도, 948000을 가진 정금강업과 같이 출력되는 것이 아닌 테이블의 첫 레코드인 '대명금속'과 같이 출력됩니다.

즉 회원님의 SQL문의 결과는

 

[상호] / [총액]

대명금속 / 948000

 

요렇게 되는 것입니다.

이래서 그룹 함수들의 이름에 '그룹'이 들어가는 것입니다. 출력시 '그룹' 기준이 되는 속성과, 그룹함수의 결과를 연동시키기 위해서요.

때문에 문제 17번과 같이 출력하기 위해서는 전체 테이블의 max 결과를 먼저 도출한 뒤 해당 결과를 다시 테이블에서 찾아서 조회하는 하위질의를 이용한 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-06-18 10:13:08

    안녕하세요 길벗수험서 운영팀입니다.

     

    [1]

    예, 생략할 수 있습니다.

    말씀하신대로 필드명(속성명)이 from에 기재된 테이블에서 겹치지 않는다면 '[테이블명].'은 생략 가능합니다. 물론 where절도 동일하게 생략 가능합니다.

     

    [2]

    네, 정상적인 결과를 출력하지 못합니다.

    이거는 약간 복잡한 설명이 될 수 있겠네요.

     

    먼저, 그룹함수들인 count, max, min, avg, sum 등은 group by가 없으면 테이블 전체에 대한 계산 값을 반환합니다.

    134쪽의 <거래내역> 테이블에서 max(총액)이라면 948000이 되겠네요.

    문제는 이상태에서 다른 필드와 함께 출력한다고 해도, 948000을 가진 정금강업과 같이 출력되는 것이 아닌 테이블의 첫 레코드인 '대명금속'과 같이 출력됩니다.

    즉 회원님의 SQL문의 결과는

     

    [상호] / [총액]

    대명금속 / 948000

     

    요렇게 되는 것입니다.

    이래서 그룹 함수들의 이름에 '그룹'이 들어가는 것입니다. 출력시 '그룹' 기준이 되는 속성과, 그룹함수의 결과를 연동시키기 위해서요.

    때문에 문제 17번과 같이 출력하기 위해서는 전체 테이블의 max 결과를 먼저 도출한 뒤 해당 결과를 다시 테이블에서 찾아서 조회하는 하위질의를 이용한 것입니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.