비교 연산자

Ryan·2025년 1월 15일

SQL/Python 분석

목록 보기
50/94

1. 연산자 활용 결과 확인하기

sql
코드 복사
SELECT 1=1;  -- 결과: 1
SELECT 2=1;  -- 결과: 0
SELECT 5>3;  -- 결과: 1
SELECT 5!=3; -- 결과: 1
SELECT 5>=3; -- 결과: 1
  • 1은 True, 0은 False MySQL이나 MariaDB와 같은 대부분의 SQL 계열 데이터베이스에서 비교 연산이나 논리 연산 결과를 정수(1 또는 0)로 반환합니다. 1은 참(True)을, 0은 거짓(False)을 의미합니다.
  • 이 특징을 WHERE 절에 활용할 수 있습니다. 예를 들어 WHERE 1=1은 항상 참이 되어, 이후 AND 조건들이 붙었을 때 필터링하기 용이합니다.

2. 데이터셋 중복값 확인하기

2-1. 전체 Row 개수 확인

sql
코드 복사
SELECT COUNT(*) AS count_row
FROM hr.hr_employee_attrition hea;
  • COUNT(*): 해당 테이블의 모든 행(row)을 단순히 개수로 세는 함수입니다.
  • hr_employee_attrition 테이블에서 전체 레코드 수를 확인할 수 있습니다.

2-2. EmployeeNumber의 Unique 개수 확인

sql
코드 복사
SELECT COUNT(DISTINCT EmployeeNumber) AS count_hc
FROM hr.hr_employee_attrition hea;
  • COUNT(DISTINCT 컬럼명): 해당 컬럼이 유일한 값이 몇 개인지를 반환합니다.
  • EmployeeNumber가 직원별로 중복 없이 고유값이라면, COUNT(DISTINCT EmployeeNumber)는 실제로 고유한 직원 수를 의미합니다.
  • 만약 count(*)count(distinct EmployeeNumber)가 다르다면, 어떤 이유로든 EmployeeNumber가 중복된 레코드가 존재하거나, 하나의 직원 번호로 여러 행이 기록되었을 가능성을 살펴봐야 합니다.

3. Sales 팀 인원수를 확인하기

sql
코드 복사
SELECT COUNT(*)
FROM hr.hr_employee_attrition hea
WHERE 1=1
  AND Department = 'Sales';
  • WHERE 1=1: 늘 참(True)이므로 이후 AND 조건을 달아가면서 필터링하기 편하게 만듭니다.
  • AND Department = 'Sales' 조건으로, Department가 'Sales'인 직원만 필터링해 인원수를 계산합니다.
  • 결과적으로 Sales 부서(팀)에 속한 직원이 몇 명인지 바로 확인 가능합니다.

TIP: WHERE 1=1의 활용

  • 여러 조건이 붙을 때 AND/OR로 가독성이 떨어질 수 있는데, WHERE 1=1을 기본으로 둔 상태에서 줄바꿈하며 조건을 추가해주면 편리합니다.
  • 물론 실제 배포환경에서는 사용 여부를 팀 컨벤션에 따라 결정하거나, 사용하지 않는 경우도 많습니다.

4. 주니어급 직원 교육 대상자 조회하기

다음 쿼리는 사내 주니어급 직원들을 대상으로 교육 프로그램을 진행하기 위해, 조건에 부합하는 대상자 인원을 확인하는 예시입니다.

조건

  1. 최소 1년 이상 재직 중
    • YearsAtCompany > 1
  2. 나이 30살 이하
    • Age <= 30
  3. JobLevel 2 이하
    • JobLevel < 3 (즉, 0~2)
  4. HR 팀은 제외
    • Department != 'Human Resources'
  5. 현재 회사에 남아있는 직원 (즉, 퇴사하지 않은 직원)
    • Attrition = 'NO'

쿼리 예시

sql
코드 복사
SELECT COUNT(*)
FROM hr.hr_employee_attrition hea
WHERE 1=1
  AND YearsAtCompany > 1
  AND Attrition = 'NO'
  AND Age <= 30
  AND JobLevel < 3
  AND Department != 'Human Resources';
  • YearsAtCompany > 1: 근속 연수가 1년을 초과해야 합니다.
  • Attrition = 'NO': 현재 재직자(퇴사하지 않은 직원)만 필터링합니다.
  • Age <= 30: 나이가 30세 이하.
  • JobLevel < 3: JobLevel 0, 1, 2까지만 해당된다고 볼 수 있습니다. (회사마다 JobLevel 정의는 다르겠지만, 일반적으로 0,1,2면 주니어급으로 볼 수 있습니다.)
  • Department != 'Human Resources': HR 부서를 제외하여 조회합니다.

이러한 조건을 모두 만족하는 레코드 수를 COUNT(*)로 확인하므로, “교육 대상”이 몇 명인지 바로 알 수 있습니다.


정리

  • 비교 연산자(=, >, >=, != 등)의 결과가 1(True), 0(False)로 나온다는 점은 SQL에서 WHERE 절을 구성할 때 유용합니다.
  • COUNT(*) vs. COUNT(DISTINCT ~)의 차이는 중복 레코드를 파악할 때 핵심입니다.
  • WHERE 1=1 문법은 쿼리 가독성조건 추가에 편의를 주기 위한 관용적인 트릭입니다.
  • 여러 조건으로 필터링할 때는 AND, OR, !=(같지 않음) 연산자 등을 조합하여 원하는 결과 집합을 얻을 수 있습니다.

이처럼 단순한 연산자와 조건 활용만으로도, 데이터셋에서 특정 정보를 빠르게 조회하거나 중복 여부를 점검하고, 원하는 조건의 직원 수를 산출할 수 있습니다.


0개의 댓글