Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 두 값의 차이 절댓값이 특정 숫자보다 클 때 레코드를 선택하는 방법

MySQL에서는 ABS() 함수(절댓값 함수)를 활용하면 두 값의 차이에 대한 절댓값이 특정 숫자보다 큰 레코드만 손쉽게 조회할 수 있습니다. 이 기능은 특히 두 컬럼 간의 편차가 일정 수준 이상인 데이터를 찾아야 할 때 유용합니다.

예를 들어, 학생 성적을 저장한 studentmarks 테이블에서 국어(Hindi)와 영어(English) 점수 차이가 10점을 초과하는 학생을 찾고 싶다면 다음과 같이 쿼리를 작성할 수 있습니다.

예제 쿼리

mysql> Select * from studentmarks where abs(Hindi-English)>10;
+--------+-------+---------+------+---------+-----------+
| Name   | Hindi | English | Math | Physics | Chemistry |
+--------+-------+---------+------+---------+-----------+
| Gaurav | 75    | 86      | 95   | 69      | 85        |
| Rahul  | 74    | 85      | 97   | 69      | 86        |
| Mohit  | 73    | 87      | 89   | 69      | 86        |
+--------+-------+---------+------+---------+-----------+
3 rows in set (0.00 sec)

결과 해석

위 결과 집합에는 국어와 영어 두 과목 점수 차이의 절댓값이 10보다 큰 학생들의 레코드만 포함되어 있습니다. 즉, 세 명의 학생 모두 두 과목 간 점수 편차가 11점 이상이라는 의미입니다.

ABS() 함수의 동작 원리

ABS() 함수는 인자로 전달된 숫자의 절댓값을 반환합니다. 따라서 Hindi - English의 결과가 음수든 양수든 상관없이, 그 차이의 크기만을 기준으로 조건을 평가하게 됩니다. 만약 ABS() 함수 없이 단순히 WHERE Hindi-English > 10으로 조건을 작성하면, 영어 점수가 국어보다 높은 경우(차이가 음수인 경우)는 결과에서 누락될 수 있습니다.

이처럼 ABS() 함수를 WHERE 절에 함께 사용하면 값의 부호와 무관하게 두 값 사이의 실질적인 차이를 기준으로 정확하게 레코드를 필터링할 수 있습니다.