>데이터 베이스 >MySQL 튜토리얼 >실제 사례를 이용한 SQL 필터링 및 정렬

실제 사례를 이용한 SQL 필터링 및 정렬

Linda Hamilton
Linda Hamilton원래의
2025-01-01 02:41:18415검색

SQL Filtering and Sorting with Real-life Examples

이 블로그에서는 WHERE, HAVING, ORDER BY, GROUP BY 등의 SQL 절과 기타 관련 절을 직원 및 부서 테이블을 실제 사례를 통해 설명합니다.

목차

  1. 테이블 구조
  2. WHERE 절
  3. GROUP BY 절
  4. HAVING 절
  5. ORDER BY 조항
  6. LIMIT 조항
  7. DISTINCT 조항
  8. AND, OR, NOT 연산자

테이블 구조

직원 테이블

emp_id name age department_id hire_date salary
1 John Smith 35 101 2020-01-01 5000
2 Jane Doe 28 102 2019-03-15 6000
3 Alice Johnson 40 103 2018-06-20 7000
4 Bob Brown 55 NULL 2015-11-10 8000
5 Charlie Black 30 102 2021-02-01 5500

부서 테이블

dept_id dept_name
101 HR
102 IT
103 Finance
104 Marketing

WHERE 절

WHERE 절은 지정된 조건에 따라 레코드를 필터링하는 데 사용됩니다.

SQL 쿼리

SELECT name, age, salary
FROM employees
WHERE age > 30;

결과

name age salary
John Smith 35 5000
Alice Johnson 40 7000
Bob Brown 55 8000

설명: WHERE 절은 30세 이상의 직원만 포함하도록 행을 필터링합니다.

AND 연산자의 예

SELECT name, age, salary
FROM employees
WHERE age > 30 AND salary > 5000;

결과

name age salary
Alice Johnson 40 7000
Bob Brown 55 8000

설명: WHERE 절은 30세 이상, 급여가 5000 이상인 직원을 필터링합니다.


GROUP BY 절

GROUP BY 절은 각 부서의 직원 수를 찾는 것과 같이 동일한 값을 가진 행을 요약 행으로 그룹화하는 데 사용됩니다.

SQL 쿼리

SELECT name, age, salary
FROM employees
WHERE age > 30;

결과

department_id employee_count
101 1
102 2
103 1

설명: GROUP BY 절은 직원을 Department_id별로 그룹화하고 각 부서의 직원 수를 계산합니다.


HAVING 절

HAVING 절은 GROUP BY 절로 생성된 그룹을 필터링하는 데 사용됩니다. WHERE 절과 동일하게 작동하지만 집계 후에 사용됩니다.

SQL 쿼리

SELECT name, age, salary
FROM employees
WHERE age > 30 AND salary > 5000;

결과

department_id avg_salary
102 5750
103 7000

설명: HAVING 절은 각 부서 직원의 평균 급여를 기준으로 그룹을 필터링합니다. 평균연봉이 5500 이상인 부서만 포함됩니다.


ORDER BY 조항

ORDER BY 절은 하나 이상의 열을 기준으로 결과 집합을 정렬하는 데 사용됩니다. 기본적으로 오름차순으로 정렬됩니다. 내림차순으로 정렬하려면 DESC를 사용하세요.

SQL 쿼리(오름차순)

SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

결과

name salary
John Smith 5000
Charlie Black 5500
Jane Doe 6000
Alice Johnson 7000
Bob Brown 8000

설명: 급여 기준 오름차순으로 정렬된 결과입니다.

SQL 쿼리(내림차순)

SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5500;

결과

name salary
Bob Brown 8000
Alice Johnson 7000
Jane Doe 6000
Charlie Black 5500
John Smith 5000

설명: 급여 내림차순으로 정렬된 결과입니다.


LIMIT 조항

LIMIT 절은 결과 집합에서 반환할 레코드 수를 지정하는 데 사용됩니다. 이는 대규모 결과 세트를 페이징하거나 제한하는 데 특히 유용합니다.

SQL 쿼리

SELECT name, age, salary
FROM employees
WHERE age > 30;

결과

name salary
Bob Brown 8000
Alice Johnson 7000
Jane Doe 6000

설명: LIMIT 절은 급여가 가장 높은 직원 상위 3명으로만 출력을 제한합니다.


DISTINCT 조항

DISTINCT 절은 결과 집합에서 고유한(다른) 값만 반환하고 중복을 제거하는 데 사용됩니다.

SQL 쿼리

SELECT name, age, salary
FROM employees
WHERE age > 30 AND salary > 5000;

결과

department_id
101
102
103

설명: DISTINCT 절은 중복을 제거하여 고유한 Department_id 값을 반환합니다.


AND, OR, NOT 연산자

AND, ORNOT 연산자는 WHERE 절에서 여러 조건을 결합하는 데 사용됩니다.

AND 연산자

AND 연산자는 두 개 이상의 조건을 결합하는 데 사용됩니다. 결과에는 모든 조건이 true인 행만 포함됩니다.

SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

결과

name age salary
Alice Johnson 40 7000
Bob Brown 55 8000

설명: WHERE 절은 두 조건(연령 > 30 및 급여 > 5500)이 모두 참인 행을 필터링합니다.

OR 연산자

OR 연산자는 조건 중 하나만 참이어야 하는 경우에 사용됩니다.

SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5500;

결과

name age salary
Jane Doe 28 6000
Alice Johnson 40 7000
Bob Brown 55 8000

설명: WHERE 절은 age < 30 또는 급여 > 7000이 맞습니다.

NOT 연산자

NOT 연산자는 조건이 true인 행을 제외하는 데 사용됩니다.

SELECT name, age, salary
FROM employees
WHERE age > 30;




결과

name age salary
John Smith 35 5000
Charlie Black 30 5500
Jane Doe 28 6000

설명: WHERE 절은 급여 > 6000은 거짓입니다. 즉, 급여가 6000 이하인 직원을 반환한다는 의미입니다.


결론

이 블로그에서는 직원 및 부서 테이블의 실제 예와 함께 SQL의 WHERE, HAVING, ORDER BY, GROUP BY 및 기타 절을 사용하여 데이터를 필터링, 그룹화 및 정렬하는 방법을 설명합니다. 효율적인 SQL 쿼리 작성, 데이터 분석, 데이터베이스 관리를 효과적으로 수행하려면 이러한 조항을 이해하는 것이 중요합니다.

위 내용은 실제 사례를 이용한 SQL 필터링 및 정렬의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.