1. (97p) 5번 문제에서
해설에는 select 이름, 재직년도, 기본급 from 사원 where 이름 not in(select 이름 from 자격증); 이라고 나와있는데요
select 사원.이름, 재직년도, 기본급으로 쓰면 틀리나요?? 그리고 사원 테이블과 자격증 테이블에 모두 '이름'이 있는데 사원.이름으로 쓰지 않는 이유가 궁금합니다.
2.(101p) 15번 문제에서
select 상호, MAX(총액) AS 총액 from 거래내역 group by 상호
라고 적는건 안되나요?
언제 select문에 그룹함수를 써야하고, 쓰지 말아야 하는지 헷깔려서 여쭤봅니다.
안녕하세요 길벗수험서 운영팀입니다.
질의문에서 from을 통해 호출되는 2개 이상 테이블에 속성명이 겹칠 때만 반드시 테이블명을 사용해야 합니다.
하위쿼리에서 호출되는 자격증 테이블을 하위쿼리가 종결되었을 때 사라지며, 상위쿼리에서는 단순히 하위쿼리에서 나온 결과만을 이용하기 때문에 속성명이 겹쳐지는 현상이 발생하지 않습니다.
---------------------------
안됩니다.
그와 같이 작성될 경우 모든 상호별 그룹에 대한 최대값이 출력되는 결과가 초래되므로, 결국 모든 튜플이 출력되는 결과가 나타납니다.
(상호명이 각기 다르므로 그룹이 튜플만큼 발생하기 때문에)
그룹함수는 그룹 내에서 적용된다는 점에 유의하세요.
select문에 그룹함수는 언제든 사용할 수 있습니다.
다만 이것이 '그룹' 함수인 이유는 group by문과 자주 어울리기 때문이죠.
group by문 없이 그룹함수를 사용하는 경우 해당 함수가 테이블 전체에 적용됩니다.
그렇다고 group by없이
select 상호, max(총액) as 총액 from 거래내역; 과 같이 작성한다고 해서 정답이 되지는 않습니다.
'max(총액)'은 테이블의 최대값인 948000을 가져오지만 그 값에 해당하는 상호명인 '정금강업'을 가져오지는 못하기 때문에 정답과 같이 작성해야 합니다. (첫번째 튜플의 상호명인 '대명금속'을 가져옵니다.)
행복한 하루되세요 :)
-
관리자2021-04-02 10:39:20
안녕하세요 길벗수험서 운영팀입니다.
질의문에서 from을 통해 호출되는 2개 이상 테이블에 속성명이 겹칠 때만 반드시 테이블명을 사용해야 합니다.
하위쿼리에서 호출되는 자격증 테이블을 하위쿼리가 종결되었을 때 사라지며, 상위쿼리에서는 단순히 하위쿼리에서 나온 결과만을 이용하기 때문에 속성명이 겹쳐지는 현상이 발생하지 않습니다.
---------------------------
안됩니다.
그와 같이 작성될 경우 모든 상호별 그룹에 대한 최대값이 출력되는 결과가 초래되므로, 결국 모든 튜플이 출력되는 결과가 나타납니다.
(상호명이 각기 다르므로 그룹이 튜플만큼 발생하기 때문에)
그룹함수는 그룹 내에서 적용된다는 점에 유의하세요.
select문에 그룹함수는 언제든 사용할 수 있습니다.
다만 이것이 '그룹' 함수인 이유는 group by문과 자주 어울리기 때문이죠.
group by문 없이 그룹함수를 사용하는 경우 해당 함수가 테이블 전체에 적용됩니다.
그렇다고 group by없이
select 상호, max(총액) as 총액 from 거래내역; 과 같이 작성한다고 해서 정답이 되지는 않습니다.
'max(총액)'은 테이블의 최대값인 948000을 가져오지만 그 값에 해당하는 상호명인 '정금강업'을 가져오지는 못하기 때문에 정답과 같이 작성해야 합니다. (첫번째 튜플의 상호명인 '대명금속'을 가져옵니다.)
행복한 하루되세요 :)