우잉's Development

SQLite3_ CASE 절, GROUP BY 절, HAVING 절 본문

개발/SQLite3

SQLite3_ CASE 절, GROUP BY 절, HAVING 절

우잉이 2022. 1. 6. 14:13
728x90
반응형

1. CASE 절 

CASE 절은 두 가지 방법이 있습니다. 하나 씩 살펴봅시다.

1-1 CASE절을 사용한 조건 분기

SELECT
   CASE 
      WHEN 조건식1 THEN 결과1
      WHEN 조건식2 THEN 결과2
      LESE 결과3
   END
FROM 테이블명;

예제로 다뤄봅시다. 일단 exam테이블을 생성하겠습니다.

CASE 절을 사용하여 80 초과면 Pass 60과 80 사이이면 Retest를 반환하고 나머지는 'Fail'입니다.

이러한 결과를 '결과'라는 컬럼으로 생성하기 위해 as'결과'로 as 절을 사용해봅시다.

1-2 CASE 절을 사용한 값 목록과 비교

SELECT
   CASE 표현식
       WHEN 값1 THEN 결과1
       WHEN 값2 THEN 결과2
       ELSE 결과3
   END
FROM 테이블 명;

표현식이 값1과 같으면 결과1을 값2와 같으면 결과2를 반환하고 어느 것도 일치하지 않으면 결과3을 반환합니다.

 

예제로 살펴봅시다. 일단 company 테이블을 생성하고 데이터를 추가하겠습니다.

CASE절로 address컬럼의 값에 따라 서로 다른 데이터를 맞게 받아와 봅시다. 받아온 데이터는 country컬럼으로 저장합시다.

2.  GROUP BY 절 

데이터의 개수를 구하는 함수와 컬럼마다 값을 계산하는 함수등을 사용할 때, 모든 데이터를 나열하는 것이 아니라 

특정 컬럼 값을 사용하여 그룹화를 하여 그룹 단위로 집계 등을 할 수 있습니다. 

SELECT 컬럼명 , ... FROM 테이블명
GROUP BY 컬러명1, 컬럼명2, ... ;

GROUP BY 절 다음에 지정된 컬럼의 값이 같으면 같은 그룹이 된다. 여러 컬럼을 지정하는 경우에는 값의 조합이 같은 것이 그룹이 됩니다.

 

예제를 살펴봅시다. 일단 원래 있던 user테이블을 삭제하고 새로운 user테이블에 데이터를 추가합시다.

남자(M)와 여자(W)를 그룹 지어 인원수를 세어봅시다. 인원수를 세워보는 것은 COUNT함수를 사용해 봅시다.

이번에는 address컬럼을 그룹화하여 수를 세어 보겠습니다.

COUNT함수 말고도 여러 가지 함수가 있다 SUM 또는 AVG 등 다른 게시글로 설명하도록 하겠습니다. 

 

3. HAVING 절 

3-1 HAVING 절을 사용하여 그룹 후의 데이터에 조건을 설정 

SELECT 컬럼명, ...
FROM 테이블명
WHERE 조건식
GROUP BY 컬럼명, ... ;

위에 식의 경우 WHERE절에 작성된 조건식으로 데이터를 조회한 후 그룹화가 됩니다.

그러나 아래 식의 경우에는 그룹화를 하고 나서 조회하는 데 사용되는 것이 HAVING 절입니다.

SELECT 컬럼명, ...
FROM 테이블명
GROUP BY 컬럼명, ... 
HAVING 조건식;

user 테이블로 address별로 count를 세어 count가 2 이상의 데이터만 조회해보겠습니다. 

 

728x90
반응형

'개발 > SQLite3' 카테고리의 다른 글

SQLite3_OUTER JOIN  (0) 2022.01.07
SQLite3_INNER JOIN  (0) 2022.01.07
SQLite3_LIMIT절, OFFSET절  (0) 2022.01.06
SQLite3_IS NULL절, AS 절, DISTINCT 절  (0) 2022.01.06
SQLite3_LIKE절과 GLOB절  (0) 2022.01.05
Comments