728x90

데이터 조회(SELECT) : 데이터 조작어(DML)이며, 데이터 분서게서 가장 많이 사용되는 명령어

  - 여러 절들과 함꼐 사용됨

     절 : FROM, WHERE, GROUP BY, HAVING, ORDER BY

회원테이블을 FROM 절 테이블 확인
성별이 남성 조건으로 필터링하여 WHERE 절 FROM절 테이블을 특정 조건으로 필터링
거주지역별로 회원수 집계 GROUP BY 절 열 별로 그룹화
집계 회원수 100명 미만 조건으로 필터링 HAVING 절 그룹화된 새로운 테이블을 특정 조건으로 필터링
모든 열 조회 SELECT 절 선택
집계 회원수가 높은 순으로 ORDER BY 절 정렬

• GROUP BY 절이 사용되게 되면 기존 테이블이 새로운 테이블이 만들어짐

 

• FROM -> WHERE -> GROUP BY 순으로 실행

  - FROM -> GROUP BY 순으로 작성해도 됨

• GROUP BY는 집계함수와 주로 사용되는 명령어

  - 여러 열별로 그룹화가 가능

  - GROUP BY에 있는 열들을 SELECT에도 작성해야 원하는 분석 결과를 확인할 수 있음

 

• 실습

USE Practice;

/************FROM************/

/* Customer 테이블 모든 열 조회 */
SELECT *
   FROM CUSTOMER;
   
   
/************WHERE****************/

/* 성별이 남성 조건으로 필터링 */
SELECT *
  FROM CUSTOMER
WHERE GENDER = 'MAN';

/************GROUP BY**************/

/* 지역별로 회원 수 집계 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR;
/* COUNT : 행들의 개수를 구하는 집계함수 */

/************HAVING*************/

/* 집계 회원수 100명 미만 조건으로 필터링 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100;
/* < : 비교 연산자 / ~보다 작은 */

/**************ORDER BY*****************/
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100
ORDER BY COUNT(MEM_NO) DESC;
/* DESC : 내림차순 / ASC : 오름차순 */

/************FROM->(WHERE)->GROUP BY***********/
/* FROM->GROUP BY 순으로 작성해도 됨*/
SELECT ADDR, COUNT(MEM_NO) AS 회원수
FROM CUSTOMER
/* WHERE GENDER = 'MAN' */
GROUP BY ADDR; 

/************GROUP BY + 집계함수 ***********/
/* 거주지역을 서울, 인천 조건으로 필터링 */
/* 거지지역 및 성별로 회원수 집계 */
SELECT 
    ADDR, GENDER, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    ADDR IN ('SEOUL' , 'INCHEON')
GROUP BY ADDR , GENDER;

/***************SQL 명령어 작성법***************/
/* 회원테이블(Customer)을 */
/* 성별이 남성 조건으로 필터링하여 */
/* 거주지역별로 회원수 집계 */
/* 집계 회원수 100명 미만 조건으로 필터링 */
/* 모든 열 조회 */
/* 집계 회원수가 높은 순으로 */

SELECT  ADDR
				,COUNT(MEM_NO) AS 회원수
   FROM  CUSTOMER
WHERE  GENDER = 'MAN' 
GROUP
        BY   ADDR
HAVING  COUNT(MEM_NO) < 100
ORDER
		BY  COUNT(MEM_NO) DESC;

 

+ Recent posts