인프런 커뮤니티 질문&답변

헤아님의 프로필 이미지
헤아

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 중급 SQL

COUNT, SUM, AVG, MIN/MAX (10:31)

max/min vs. order by + limit 질문

작성

·

884

2

안녕하세요,

최대값과 최소값 찾는 방법에 대해 질문드려요. 가장 쉬운 방법으로는 MAX() 와 MIN()를 쓰는 방법이 있는데, 수업 중에 선생님께서 order by ___ desc, limit 1 와 order by ___ asc, limit 1도 가르쳐주셔서 차이점을 여쭤보아요. 어떤 경우에 어떤 방식을 쓰면 되나요?

감사합니다!

답변 4

0

헤아님의 프로필 이미지
헤아
질문자

아! 감사합니다. 이해가 되었어요 헿
고급반 기다리고 있겠습니다 선생님!

0

윤선미님의 프로필 이미지
윤선미
지식공유자

네!

MAX(), MIN() 함수는 단순히 해당 컬럼의 최소값, 또는 최대값을 출력하고 싶을 때 사용하시면 되고요.

지난번 코드에서는 단순히 MAX(month*salary)만 찾는게 아니라, max earnings를 가진 사람의 인원수도 계산해야했었어요. 그래서 서브쿼리 해설에서, WHERE절에서 max earnings를 가진 사람만 걸러내는 작업을 하고, COUNT() 함수로 인원수를 셋다고 이해하시면 될 것 같아요 :)

단순히 MAX(month*salary) 만 출력하면 되는 문제였다면,

SELECT MAX(month * salary)
FROM employee

라고 적으셨어도 됩니다.

0

헤아님의 프로필 이미지
헤아
질문자

빠른 답변 감사드립니다! 제가 이해한 바를 말씀드리자면,

MAX()와  MIN()함수는 1) 정렬기준과 출력하는 칼럼이 같고 2) 다른 연산과정이 필요없을 때 쓸 수 있는 건가요?

그렇다면, 제가 지난 번에 드린 질문에서 제가 쓴 코드가 맞지 않았던 이유 또한 단순히 MAX(salary)를 찾는 것이 아닌,  MAX(month*salary)를 찾아야하기 때문이고, 그래서 WHERE절이 필요했기 때문인가요?

친절히 설명해주셔서 감사드려요!

0

윤선미님의 프로필 이미지
윤선미
지식공유자

헤아님 항상 날카로운 질문 하시는 것 같아요. 질문들이 좀 충분히 들어오면 모아서 Q&A 강의도 찍어봐야겠다는 생각이 드네요.

예를 들어서, Weather Observation Station 15번 같은 문제를 보면 정렬 기준은 LAT_N(largest Northern Latitude)이지만, 출력을 해야하는 컬럼은 LONG_W이죠. 이렇게 정렬기준과 출력을 해야하는 컬럼이 다를 때에 크게 두 가지 풀이 방법이 있을 수 있겠는데요.

1. ORDER BY, LIMIT를 엮어서 ORDER BY에서는 정렬 기준을, SELECT에서는 출력해야 하는 컬럼을 써주는 방법
2. 지난 질문에서 답해드린 것처럼 서브쿼리를 써서, WHERE로 특정 값(최대값 또는 최소값)만 걸러낸 뒤에 출력해주는 방법

이렇게 두 가지 방법으로 해볼 수 있는데, 기초 강의에서는 ORDER BY를 활용해서 풀어봤어요 :) 한 문제에서도 여러가지 풀이방법이 나올 수 있습니다.

단순히 테이블 또는 그룹에서 최대값, 최소값을 찾고 싶은 거라면 (예를 들어, price 테이블의 최소값은 2.5달러 같이요) MAX(), MIN() 함수를 활용하시는게 훨씬 간단합니다.

답변이 되었을까요? 항상 좋은 질문해주셔서 감사해요 :)

헤아님의 프로필 이미지
헤아

작성한 질문수

질문하기