Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

SQL 케이스

데이터베이스로 작업할 때 if/then 쿼리에서 작업. 예를 들어 직원 목록을 살펴보고 직원이 귀하와 1년 이상 근무한 경우 수습 상태를 변경할 수 있습니다. 또는 리더보드의 플레이어 목록을 살펴보고 상위 3위 안에 들면 승자로 표시할 수 있습니다.

SQL에서 이러한 작업을 실행하려면 , CASE를 사용해야 합니다. 성명. SQL CASE 문을 사용하면 if/then를 실행할 수 있습니다. if/then 실행 방법과 유사한 작업 Microsoft Excel의 절차

이 가이드에서는 SQL CASE 문을 참조하고 쿼리에서 이를 사용할 수 있는 방법에 대해 논의합니다. 여러 SQL CASE를 사용하는 방법도 논의합니다. 명령문 및 CASE 방법 탐색 집계 함수와 함께 사용할 수 있습니다.

쿼리 리프레셔

데이터베이스에서 정보를 검색하려면 쿼리를 작성해야 합니다. 쿼리는 거의 항상 SELECT로 시작합니다. 쿼리에서 반환해야 하는 열을 데이터베이스에 알리는 데 사용되는 문입니다. 쿼리에는 일반적으로 FROM도 포함됩니다. 작업이 검색할 테이블을 데이터베이스에 알려주는 절입니다.

다음은 SQL의 쿼리 구문입니다. :

SELECT column_name FROM table_name WHERE conditions_are_met;

이것을 실제로 설명하기 위해 예를 사용하겠습니다. 다음은 employees에 있는 모든 직원의 이름을 반환하는 쿼리입니다. 표:

SELECT name FROM employees;

쿼리는 결과를 반환합니다.

이름
루크
마이크
한나
제프
알렉시스
엠마
요나
아담

(8줄)

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

여러 열을 검색하려면 해당 이름을 열로 구분하여 검색할 수 있습니다. 또는 모든 열에 대한 정보를 수집하려면 별표(* ) 연산자는 SQL의 모든 열을 나타냅니다. 표.

또한 특정 조건 집합을 기반으로 레코드를 필터링하려면 WHERE를 사용할 수 있습니다. 절. 다음은 회사의 Albany 지점에 있는 모든 직원의 이름을 찾는 쿼리의 예입니다.

SELECT name FROM employees WHERE branch = 'Albany';

다음은 쿼리 결과입니다.

이름
엠마
요나

(2줄)

이것들은 모두 비교적 간단한 쿼리입니다. 하지만 if/then 쿼리를 실행할 때 작업? SQL CASE 설명이 도움이 될 수 있습니다.

SQL 사례

CASE 명령문은 SQL에서 사용할 수 있습니다. if/then 정의 우리 코드의 논리. 예를 들어, 우리 회사에서 5년 이상 근무한 모든 직원에게 임금 인상을 하려면 CASE를 사용할 수 있습니다. 성명서.

SQL CASE 구문은 다음과 같습니다. 성명:

SELECT column1_name
	CASE WHEN column2_name = 'X' THEN 'Y'
		ELSE NULL END AS column3_name
	FROM table_name;

이 쿼리에서 많은 일이 진행 중이므로 예제를 사용하여 작동 방식을 설명하겠습니다. employee of the month이 5명 이상인 모든 직원에게 $200 인상을 수여합니다. 다음은 SQL입니다. 그 목표를 달성할 수 있는 진술:

SELECT name,
	CASE WHEN employee_month_awards > 5 THEN 200
		ELSE NULL END AS pending_raise
	FROM employees;

쿼리는 검색된 케이스 표현식에서 다음을 반환합니다.

이름 보류_인상
루크
마이크
한나
제프
알렉시스
엠마 200
요나
아담 200

(8줄)

이것을 분해해 봅시다. CASE 문은 각 레코드를 확인하고 조건문, employee month awards > 5 여부를 평가합니다. , 사실이다. 조건문이 참이면 200pending_raise에 인쇄됩니다. 열. 조건문이 거짓인 경우 null 값이 남습니다.

마지막으로 쿼리는 직원 이름 목록과 해당 직원의 보류 중인 인상을 반환합니다.

SQL CASE 문은 테이블에 새 열을 추가하지 않습니다. 오히려 SELECT에 열이 생성됩니다. 쿼리 출력 , 인상을 받을 자격이 있는 사람을 확인할 수 있습니다.

또한 인상 자격이 없는 모든 사람에게 보류 중인 인상, 우리는 를 지정할 수 있습니다. NULL 대신 ELSE에서 성명. ORDER BY를 사용할 수도 있습니다. 특정 순서로 데이터를 보려면 명령문을 정렬하는 절입니다.

SQL CASE 및 여러 조건

CASE 동일한 쿼리에서 문을 여러 번 사용할 수 있습니다. 3개 이상의 상을 받은 모든 직원에게 50달러 인상을 주고 5개 이상의 상을 받은 모든 직원에게 200달러 인상을 주고 싶다면 다음 명령문을 사용할 수 있습니다.

SELECT name,
	CASE WHEN employee_month_awards > 5 THEN 200
		WHEN employee_month_awards > 3 THEN 50
		ELSE 0 END AS pending_raise
	FROM employees;

쿼리의 출력은 다음과 같습니다.

이름 보류_인상
루크 50
마이크
한나
제프
알렉시스
엠마 200
요나 50
아담 200

(8줄)

이 예에서 CASE 문은 작성된 순서대로 평가됩니다.

따라서 쿼리는 먼저 5개 이상의 상을 받은 사람들을 확인하고 보류 중인 인상을 200으로 설정합니다. . 그런 다음 쿼리는 3개 이상의 상을 받은 사람들을 확인하고 보류 중인 인상을 50으로 설정합니다. . 마지막으로 직원이 기준을 충족하지 않으면 보류 중인 인상이 로 설정됩니다. .

그러나 이 코드는 더 효율적일 수 있습니다. 프로그램이 작동하도록 특정 순서로 명령문을 작성하는 대신 겹치지 않는 명령문을 작성해야 합니다. 다음은 위와 같은 방식으로 작동하지만 AND를 사용하는 쿼리의 예입니다. 직원이 받은 상 수를 확인하는 명세서:

SELECT name,
	CASE WHEN employee_month_awards >= 3 AND employee_month_awards <= 5 THEN 50
		WHEN employee_month_awards > 5 THEN 200
		ELSE 0 END AS pending_raise
	FROM employees;

쿼리는 위 쿼리와 동일한 결과를 반환합니다. 그러나 이것은 CASE의 순서에 의존하지 않습니다. 이는 잘못된 진술로 실수할 가능성이 적다는 것을 의미합니다.

SQL CASE 및 집계 함수

CASE를 사용할 수도 있습니다. 집계 기능으로. 이는 특정 조건을 충족하는 행만 계산하려는 경우에 유용할 수 있습니다. 예를 들어, $200의 보너스를 받은 직원 수를 확인하려면 CASE를 사용할 수 있습니다. 집계 기능으로.

CASE를 사용하는 구문은 다음과 같습니다. 집계 함수 사용:

SELECT column1_name
	CASE WHEN column2_name = 'X' THEN 'Y'
		ELSE NULL END AS column3_name,
		COUNT(1) AS count
	FROM table_name
GROUP BY column3_name;

이것이 어떻게 작동하는지 설명하기 위해 예를 사용하겠습니다. $50 이상의 보너스를 받을 수 있는 직원이 몇 명인지 알고 싶다고 가정해 보겠습니다. 다음 쿼리를 사용하여 이 정보를 얻을 수 있습니다.

SELECT 
	CASE WHEN employee_month_awards >= 3 AND employee_month_awards <= 5 THEN 50
		WHEN employee_month_awards > 5 THEN 200
		ELSE 0 END AS pending_raise,
		COUNT(1) AS count
	FROM employees
GROUP BY pending_raise;

쿼리는 다음을 반환합니다.

pending_raise 카운트
50 3
3
200 2

보시다시피, 쿼리는 직원이 받은 보류 중인 인상의 목록과 직원이 받아야 하는 각 유형의 인상의 수를 반환했습니다. 이 경우, 3명의 직원은 $50 인상, 3명의 직원은 인상 없음, 2명의 직원은 $200 인상이 예정되어 있습니다.

결론

이 튜토리얼에서는 SQL 서버 CASE 문을 작성하고 if/then을 구현하는 데 사용할 수 있는 방법에 대해 논의했습니다. 우리 쿼리의 논리. 또한 CASE 여러 조건 및 집계 함수와 함께 사용할 수 있습니다.

참고로 모든 간단한 CASE 표현식은 다음 규칙을 따라야 합니다.

  • CASE 문은 SELECT에 있어야 합니다. 조항;
  • CASE 문에는 WHEN이 포함되어야 합니다. , THEN , 및 END 구성 요소;
  • 여러 WHEN 문 및 ELSE 절은 선택적으로 사용할 수 있습니다.
  • AND와 같은 조건문 또는 OR , CASE에서 사용할 수 있습니다. WHEN 사이의 쿼리 및 THEN 조항.

이제 CASE를 사용하는 데 필요한 지식을 갖추었습니다. SQL과 같은 문장 전문가!