-
IS NULL - 잡은 물고기의 평균 길이 구하기코테 2024. 4. 22. 21:45728x90
문제 설명
낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다.
FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은
각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.
Column name Type Nullable ID INTEGER FALSE # 물고기 ID FISH_TYPE INTEGER FALSE # 물고기 종류 LENGTH FLOAT TRUE # 물고기 길이 TIME DATE FALSE # 잡은 날짜
단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.
문제
잡은 물고기의 평균 길이를 출력하는 SQL문을 작성해주세요.
평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH로 해주세요.
평균 길이는 소수점 3째자리에서 반올림하며, 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구해주세요.
풀이
SELECT ROUND(AVG(IFNULL(LENGTH, 10)),2) AS AVERAGE_LENGTH FROM FISH_INFO;
1. 물고기 길이(LENGTH)의 평균값 구하기 - SUM,AVERAGE
2. 길이 평균값을 소수점 셋째 자리까지 구하기 - ROUND
3. 길이가 10cm 이하인 NULL 값을 INT 즉 10으로 바꿔주기
라고 머릿속으로 정리를 해보았다.
IF 문을 활용해 보려 했지만 SQL의 IF 문은 주로 데이터를 조회하거나 업데이트할 때 사용되는데, 예를 들어 특정 조건에 따라 조회 결과를 필터링하거나 값을 변경할 때 IF 문을 사용할 수 있다. 그리고 NULL 값이 아닌 숫자 등의 값을 다룰 때에도 IF 문을 활용할 수 있으므로 NULL이 포함되어 있기 때문에 사용불가 따라서 IFNULL을 사용했다.
SELECT ROUND(AVG(IFNULL(LENGTH, 10)),2) AS AVERAGE_LENGTH FROM FISH_INFO; # 풀이 해설 SELECT IFNULL(LENGTH, 10) AS AVERAGE_LENGTH # LENGTH 열에서 NULL이 아닌 경우 LENGTH 즉 해당 데이터를 출력하고 # LENGTH 열에서 NULL일 경우 10으로 변환시켜 준다. # 열 이름은 AVERAGE_LENGTH로 변환한다. SELECT AVG(IFNULL(LENGTH, 10)) AS AVERAGE_LENGTH # LENGTH 열에서 NULL이 아닌 경우 LENGTH 즉 해당 데이터를 출력하고 # LENGTH 열에서 NULL일 경우 10으로 변환시켜 준다. # LENGTH 데이터의 평균을 구한다. # 열 이름은 AVERAGE_LENGTH로 변환한다. SELECT ROUND(AVG(IFNULL(LENGTH, 10)),3) AS AVERAGE_LENGTH # LENGTH 열에서 NULL이 아닌 경우 LENGTH 즉 해당 데이터를 출력하고 # LENGTH 열에서 NULL일 경우 10으로 변환시켜 준다. # LENGTH 데이터의 평균을 구한다. # 결과를 소수점 셋째 자리까지 반환한다. # 열 이름은 AVERAGE_LENGTH로 변환한다.
IFNULL - 첫 번째 매개변수가 NULL이 아니면 해당 값을 반환하고, NULL이면 두 번째 매개변수를 반환한다. 이를 통해 NULL 값을 다른 값으로 대체할 수 있다.
IFNULL(expression, replacement) # expression은 평가할 값 또는 열 # replacement는 expression이 NULL일 경우 반환할 대체값 # IFNULL 함수를 사용하여 특정 열이 NULL인 경우 0으로 대체할 수 있다.
ROUND - ROUND 함수는 숫자를 지정된 소수점 자리수로 반올림하여 반환하는 SQL 함수이다. 이 함수는 다양한 상황에서 숫자를 다룰 때 유용하게 활용된다.
ROUND(expression, decimals) # expression은 반올림할 숫자나 숫자 열 # decimals는 반올림하여 유지할 소수점 자리 수
예를 들어, ROUND 함수를 사용하여 3.456을 소수점 둘째 자리로 반올림하면 3.46이 된다. 만약 소수점 첫째 자리로 반올림하려면 3.456은 3.5가 된다. ROUND 함수는 양수 또는 음수의 값을 가질 수 있으며, decimals 매개변수를 사용하여 반올림할 소수점 자리 수를 지정할 수 있다.
728x90'코테' 카테고리의 다른 글
IS NULL - 경기도에 위치한 식품창고 목록 출력하기 (0) 2024.04.24 SELECT - 잔챙이 잡은 수 구하기 (0) 2024.04.23 SUM, MAX, MIN - 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) 2024.04.21 String, Date - 한 해에 잡은 물고기 수 구하기 (0) 2024.04.20 SELECT - 가장 큰 물고기 10마리 구하기 (0) 2024.04.19