Menu
Coddy logo textTech

그룹화 2부

Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 37번째.

WHERE 키워드는 각 레코드에 대해 조건을 개별적으로 실행합니다. 예를 들면 다음과 같습니다.

SELECT * FROM table1
WHERE col1 > col2

col1 > col2는 모든 레코드에서 실행되어 조건이 충족되는지 확인합니다.

하지만 집계 결과를 필터링하려면 어떻게 해야 할까요? 예를 들어:

SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY category

이 방법은 작동하지 않습니다. WHERE는 집계 결과를 확인할 수 없기 때문입니다. 이를 위해 HAVING 키워드가 있습니다. HAVING은 집계 조건에 따라 데이터를 필터링합니다.

SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40

이는 평균 price가 40보다 큰 모든 category를 필터링합니다.

HAVING 절과 WHERE 절을 결합하려면 다음과 같이 작성합니다:

SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40

먼저 레코드별로 확인하면서 price가 25보다 큰 모든 레코드를 필터링하고, 그 후에야 GROUP BY 절을 실행하여 평균 price가 40보다 큰 모든 category를 필터링합니다.

challenge icon

챌린지

중급

사용 가능한 테이블 및 열:

  • earthquakes: location, amplitude, period

리히터 규모는 지진의 규모를 측정하는 데 사용되는 로그 척도입니다.

모든 주요 지진에 대해 각 location의 평균 규모를 반환해야 합니다.

주요 지진은 다음과 같이 정의됩니다:

  • amplitude가 1보다 크거나 같습니다
  • 파동의 period가 1분보다 크거나 같습니다

이 과제에서는 다음과 같은 다른 공식을 사용합니다: M = (A/T)<sup>2</sup> / T. 이는 M = ((A/T)*(A/T)) / T와 같습니다.

각 location과 해당 location의 평균 규모를 반환하되, 주요 지진만 포함하세요(열 이름은 avg_magnitude로 지정). 결과에는 avg_magnitude가 1보다 큰 location만 포함하세요.

결과를 소수점 둘째 자리까지 반올림하세요.

직접 해보기

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: SQL 플레이그라운드