SQL Case when 사용법
Case 는 두 가지 형식 을 가지 고 있 습 니 다.간단 한 Case 함수 와 Case 검색 함수.
-- Case CASE sexWHEN '1' THEN ' 'WHEN '2' THEN ' 'ELSE ' ' END--Case CASE WHEN sex = '1' THEN ' 'WHEN sex = '2' THEN ' 'ELSE ' ' END
이 두 가지 방식 은 같은 기능 을 실현 할 수 있다.간단 한 Case 함수 의 작성 방법 은 상대 적 으로 간결 하지만 Case 검색 함수 에 비해 기능 적 으로 제한 이 있 습 니 다. 예 를 들 어 판단 식 을 쓰 는 것 입 니 다.또 주의해 야 할 문제 가 있 습 니 다. Case 함 수 는 첫 번 째 조건 에 맞 는 값 만 되 돌려 주 고 나머지 Case 부분 은 자동 으로 무 시 됩 니 다.
-- , SQL, “ ” CASE WHEN col_1 IN ( 'a', 'b') THEN ' 'WHEN col_1 IN ('a') THEN ' 'ELSE' ' END
Case 함 수 를 사용 하면 어떤 일 을 할 수 있 는 지 살 펴 보 겠 습 니 다.1. 이미 알 고 있 는 데 이 터 는 다른 방식 으로 그룹 을 나 누 어 분석 합 니 다.다음 과 같은 데이터 가 있 습 니 다. (더 잘 보이 기 위해 저 는 국가 코드 를 사용 하지 않 고 국가 이름 을 Primary Key 로 직접 사용 합 니 다)
국가 (국가)
인구 (인구)
중국.
600
미국.
100
캐나다
100
영국.
200
프랑스
300
일본.
250
독일.
200
멕시코
50
인도.
250
이 나라 의 인구 데이터 에 따 르 면 아시아 와 북 미의 인구 수 를 통계 한다.아래 의 이 결 과 를 얻어 야 한다.
주.
인구
아시아의
1100
북 미
250
기타
700
이 문 제 를 해결 하려 면 어떻게 하 시 겠 습 니까?주 코드 가 있 는 View 를 만 드 는 것 은 해결 방법 이지 만 통 계 를 동태 적 으로 바 꾸 기 어렵다.Case 함 수 를 사용 하면 SQL 코드 는 다음 과 같 습 니 다.
SELECT SUM(population),CASE countryWHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'ELSE ' ' ENDFROM Table_AGROUP BY CASE countryWHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'WHEN ' ' THEN ' 'ELSE ' ' END;
마찬가지 로 우 리 는 이 방법 으로 임금 의 등급 을 판단 하고 각 등급 의 인원 을 통계 할 수 있다.SQL 코드 는 다음 과 같 습 니 다.
SELECTCASE WHEN salary <= 500 THEN '1'WHEN salary > 500 AND salary <= 600 THEN '2'WHEN salary > 600 AND salary <= 800 THEN '3'WHEN salary > 800 AND salary <= 1000 THEN '4'ELSE NULL END salary_class,
COUNT(*)FROM Table_AGROUP BYCASE WHEN salary <= 500 THEN '1'WHEN salary > 500 AND salary <= 600 THEN '2'WHEN salary > 600 AND salary <= 800 THEN '3'WHEN salary > 800 AND salary <= 1000 THEN '4'ELSE NULL END;
둘째, 하나의 SQL 문장 으로 서로 다른 조건 의 그룹 을 완성 합 니 다.다음 과 같은 데이터 가 있 습 니 다.
국가 (국가)
성별 (성별)
인구 (인구)
중국.
1
340
중국.
2
260
미국.
1
45
미국.
2
55
캐나다
1
51
캐나다
2
49
영국.
1
40
영국.
2
60
국가 와 성별 에 따라 조 를 나 누 어 결 과 는 다음 과 같다.
나라.
남자.
여자.
중국.
340
260
미국.
45
55
캐나다
51
49
영국.
40
60
일반적으로 UNION 으로 도 하나의 문구 로 조회 가 가능 하 다.하지만 그렇게 소모 (두 개의 Select 부분) 를 늘 리 고 SQL 문 구 는 비교적 길다.다음은 Case 함수 로 이 기능 을 완성 한 예 입 니 다.
SELECT country,
SUM( CASE WHEN sex = '1' THENpopulation ELSE 0 END), -- SUM( CASE WHEN sex = '2' THENpopulation ELSE 0 END) -- FROM Table_AGROUP BY country;
이렇게 해서 우 리 는 Select 를 사용 하여 2 차원 표 에 대한 출력 형식 을 완성 하여 Case 함수 의 강 함 을 충분히 나 타 냈 다.3. Check 에서 Case 함 수 를 사용 합 니 다.Check 에서 Case 함 수 를 사용 하 는 것 은 많은 경우 에 매우 좋 은 해결 방법 입 니 다.Check 을 전혀 사용 하지 않 는 사람 이 많 을 수도 있 습 니 다. 그러면 다음 의 예 를 본 후에 도 SQL 에서 Check 을 사용 해 보 는 것 을 권장 합 니 다.다음은 예 를 들 어 회사 A. 이 회 사 는 여 직원 의 임금 이 1000 위안 을 넘 어야 한 다 는 규정 이 있다.Check 과 Case 로 표현 하면 다음 과 같 습 니 다.
CONSTRAINT check_salary CHECK( CASE WHEN sex = '2'THEN CASE WHEN salary > 1000THEN 1 ELSE 0 ENDELSE 1 END = 1 )
Check 만 사용 하면 다음 과 같 습 니 다.
CONSTRAINT check_salary CHECK( sex = '2' AND salary > 1000 )
여 직원 의 조건 이 맞 으 면 남자 직원 은 입력 할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.