데이터베이스로 작업할 때 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
여부를 평가합니다. , 사실이다. 조건문이 참이면 200
값 pending_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
과 같은 문장 전문가!