작성
·
653
0
안녕하세요 선생님~! 강의를 듣다 이 문제를 다르게 푸는 방법도 있을까 궁금해져서 질문드립니다.
1.
스텝별로 풀이는 설명해주실 때, 3.earning 중에 가장 큰 값을 가져온다
라는 부분은 limit 1로 큰 값만 출력되게 해주셨는데요. 혹시 이 부분을 select 절에서 다른 구문으로 출력하게 하는 것도 가능할까요?
select max(salary*months as earnings), count(*)
from employee
group by earnings
(쿼리를 돌려보았을 땐 잘못된 답이라고 나오긴 하네요..ㅎㅎ)
2.
아래 쿼리 중에 잘못 작성된 내용이 있을까요? 똑같은 쿼리로 적은 것 같은데 계속 잘못된 답이라고 응답이 뜨네요..!
/*
select salary * months AS earnings, count (*)
from Employee
group by earnings
order by earnings desc
limit 1
*/
답변 1
1
SELECT와 MAX를 사용해서 구하려면 SELECT 절이 하나가 더 필요합니다.
이렇게 쿼리 안에 또 다른 쿼리를 쓰는 것을 서브쿼리라고 합니다.
저희 커리큘럼에서는 서브쿼리를 고급반에서 다룹니다만 아래 쿼리와 주석을 참고하면 이해가 되실 거에요.
SELECT salary * months AS earnings, COUNT()
FROM employee
GROUP BY earnings
HAVING earnings = (-- 1. salary * months 의 최대값 구하기
SELECT MAX(salary * months)
FROM employee) -- 2. 1에서 구한 최대값과 동일한 값을 갖는 row를 추출
count (*) 에서 count와 괄호 사이를 붙여서 count(*) 라고 작성하면 잘 작동됩니다.