ql 서버에서 Case 사용 방법(위 아래) 1/2페이지

4413 단어
 
  
-- Case
CASE sex
WHEN '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 함수를 사용하여 수행할 수 있는 작업을 살펴보겠습니다.
 
첫째, 이미 알고 있는 데이터는 다른 방식에 따라 조를 나누어 분석한다.
다음과 같은 데이터가 있다. (더 잘 보이기 위해 나는 국가 코드를 사용하지 않고 직접 국가 이름을 Primary Key로 사용한다)
국가
인구(population)
중국
600
미국
100
캐나다
100
영국
200
프랑스
300
일본어
250
독일
200
멕시코
50
인도
250
이 나라의 인구 데이터에 근거하여 아시아와 북미의 인구 수를 통계하다.아래의 이 결과를 얻어야 한다.

인구
아시아 주
1100
북아메리카
250
기타
700
이 문제를 해결하려면 어떻게 할 거예요?대륙 코드가 있는 View를 생성하는 것은 해결 방법이지만, 이렇게 하면 통계의 방식을 동태적으로 바꾸기 어렵다.Case 함수를 사용하는 경우 SQL 코드는 다음과 같습니다.
 
  
SELECT SUM(population),
CASE country
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
ELSE ' ' END
FROM Table_A
GROUP BY CASE country
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
WHEN ' ' THEN ' '
ELSE ' ' END;


마찬가지로 우리도 이 방법으로 임금의 등급을 판단하고 각 등급의 인원을 통계할 수 있다.SQL 코드는 다음과 같습니다.
 
  
SELECT
CASE 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_A
GROUP BY
CASE 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 문으로 서로 다른 조건의 그룹을 완성한다.
 
다음과 같은 데이터가 있다
국가
성별
인구(population)
중국
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' THEN
population ELSE 0 END), --
SUM( CASE WHEN sex = '2' THEN
population ELSE 0 END) --
FROM Table_A
GROUP BY country;

이렇게 하면 우리는 Select를 사용하여 2차원 테이블에 대한 출력 형식을 완성하고 Case 함수의 강대함을 충분히 나타낸다.
셋째, Check에서 Case 함수를 사용합니다.
Check에서 Case 함수를 사용하는 것은 많은 경우에 아주 좋은 해결 방법입니다.많은 사람들이 체크를 전혀 하지 않을 수도 있다. 그러면 아래의 예를 본 후에도 SQL에서 체크를 사용해 보는 것을 권장한다.
다음은 저희가 예를 들겠습니다.
회사 A, 이 회사는 여직원의 임금이 반드시 1000위안을 초과해야 한다는 규정이 있다.Check 및 Case로 표현하면 다음과 같습니다.
 
  
CONSTRAINT check_salary CHECK
( CASE WHEN sex = '2'
THEN CASE WHEN salary > 1000
THEN 1 ELSE 0 END
ELSE 1 END = 1 )

체크만 사용하는 경우 다음과 같습니다.
 
  
CONSTRAINT check_salary CHECK
( sex = '2' AND salary > 1000 )

여직원의 조건이 맞으면 남자 직원은 입력할 수 없다.
1 2 다음 페이지 전체 텍스트 읽기

좋은 웹페이지 즐겨찾기