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)을 의미합니다.WHERE 1=1은 항상 참이 되어, 이후 AND 조건들이 붙었을 때 필터링하기 용이합니다.sql
코드 복사
SELECT COUNT(*) AS count_row
FROM hr.hr_employee_attrition hea;
hr_employee_attrition 테이블에서 전체 레코드 수를 확인할 수 있습니다.sql
코드 복사
SELECT COUNT(DISTINCT EmployeeNumber) AS count_hc
FROM hr.hr_employee_attrition hea;
COUNT(DISTINCT EmployeeNumber)는 실제로 고유한 직원 수를 의미합니다.count(*)와 count(distinct EmployeeNumber)가 다르다면, 어떤 이유로든 EmployeeNumber가 중복된 레코드가 존재하거나, 하나의 직원 번호로 여러 행이 기록되었을 가능성을 살펴봐야 합니다.sql
코드 복사
SELECT COUNT(*)
FROM hr.hr_employee_attrition hea
WHERE 1=1
AND Department = 'Sales';
AND Department = 'Sales' 조건으로, Department가 'Sales'인 직원만 필터링해 인원수를 계산합니다.TIP: WHERE 1=1의 활용
- 여러 조건이 붙을 때 AND/OR로 가독성이 떨어질 수 있는데,
WHERE 1=1을 기본으로 둔 상태에서 줄바꿈하며 조건을 추가해주면 편리합니다.- 물론 실제 배포환경에서는 사용 여부를 팀 컨벤션에 따라 결정하거나, 사용하지 않는 경우도 많습니다.
다음 쿼리는 사내 주니어급 직원들을 대상으로 교육 프로그램을 진행하기 위해, 조건에 부합하는 대상자 인원을 확인하는 예시입니다.
YearsAtCompany > 1Age <= 30JobLevel < 3 (즉, 0~2)Department != 'Human Resources'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';
이러한 조건을 모두 만족하는 레코드 수를 COUNT(*)로 확인하므로, “교육 대상”이 몇 명인지 바로 알 수 있습니다.
=, >, >=, != 등)의 결과가 1(True), 0(False)로 나온다는 점은 SQL에서 WHERE 절을 구성할 때 유용합니다.COUNT(*) vs. COUNT(DISTINCT ~)의 차이는 중복 레코드를 파악할 때 핵심입니다.WHERE 1=1 문법은 쿼리 가독성과 조건 추가에 편의를 주기 위한 관용적인 트릭입니다.AND, OR, !=(같지 않음) 연산자 등을 조합하여 원하는 결과 집합을 얻을 수 있습니다.이처럼 단순한 연산자와 조건 활용만으로도, 데이터셋에서 특정 정보를 빠르게 조회하거나 중복 여부를 점검하고, 원하는 조건의 직원 수를 산출할 수 있습니다.