ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DML]SELECT구문
    SQLD/SQL 2023. 8. 29. 19:34

    SELECT

    저장되어 있는 데이터를 조회하기 위해 사용한다.

     

    1)SELECT의 구성과 실행 순서

    순서 설명
    5 SELECT 가져올 컬럼을 지정한다.
    1 FROM 가져올 테이블을 지정한다.
    2 WHERE
    조건을 설정한다.
    3 GROUP BY 그룹별로 묶을 수 있도록 해주는 명령어
    4 HAVING 집계 함수에 대한 조건절은 HAVING에서만 사용 가능
    6 ORDERBY 지정한 컬럼을 오름차순/내림차순 정렬한다.

    GROUP BY

    • 그룹별로 묶을 수 있도록 해주는 명령어
    • 그룹화 하는 이유는 그룹별로 집계를 하기 위해서인 경우가 많다.
    • 여러개의 컬럼으로 그룹화 할 수 있다.
    SELECT 지역,성별,COUNT(*) as 집계
    FROM 주민
    GROUP BY 지역,성별 -- 지역과 성별을 그룹화한다. EX) 경기 여성/경기 남성

     HAVING

    • GROUP BY의 WHERE절 역할을 한다.
    • 집계 함수에 대한 조건절은 HAVING에서만 사용 가능하다.
    • WHERE절을 사용해도 되는 조건을 HAVING절에서 사용하면 성능상 불리할 수 있다.
    -- 수학의 평균 점수가 90점 이상인 학생을 구하기
    SELECT 학생번호,AVG(수학) AS 수학 평균점수
    FROM 학생
    WHERE 년도 = '2023' AND 학기 = '1'
    GROUP BY 학생번호
    HAVING AVG(수학) >= 90

    ORDER BY

    • 내림차순(DESC),오름차순(ASC)두 개의 옵션이 존재하며, 기본 값은 오름차순(ASC)이다.
    • SELECT절에 정의하지 않은 컬럼을 사용해도 문제 없다.
    • 컬럼명이나 ALIAS로 명시하거나 SELECT절의 컬럼 순서를 숫자로 명시할 수 있다.
    • 여러가지 컬럼을 기준으로 정렬이 가능하다.
    -----SELECT절에 기술되지 않은 컬럼으로 정렬이 가능하다.
    SELECT 지역,매출 금액
    FROM 지역별매출
    ORDER BY 년;
    
    -----컬럼명으로 정렬
    SELECT COL1,COL2
    FROM SAMPLE
    ORDER BY COL1 DESC COL2 DESC -- COL1을 기준으로 내림차순 정렬,같은 값이 있다면 COL2로 내림차순
    
    -----숫자로 정렬
    SELECT COL1,COL2
    FROM SAMPLE
    ORDER BY 1 2; -- 1번 컬럼을 기준으로 ASC,같은 값이 존재한다면 2번 컬럼을 기준으로 ASC
    
    -----인라인 뷰의 경우 SELECT절에 있는 컬럼만 사용가능
    SELECT 지역,매출금액 
    FROM (
    	SELECT 지역,매출금액
    	FROM 지역별 매출
    )
    ORDER BY 년 ASC; ❌
    
    ----- 집계 함수 사용이 가능
    SELECT 지역,SUM(매출금액) AS 매출금액
    FROM 지역별매출
    GROUP BY 지역
    HAVING SUM(매출금액) > 1000
    ORDER BY COUNT(*)

     

     

    'SQLD > SQL' 카테고리의 다른 글

    [DML]SELECT-서브쿼리  (0) 2023.09.07
    [DML]SELECT-연산자  (0) 2023.08.30
    [DML]INSERT,UPDATE,DELETE  (0) 2023.08.29
    [DDL]ALTER,DROP,TRUNCATE,RENAME  (0) 2023.08.29
    [DDL]CREATE  (0) 2023.08.28
Designed by Tistory.