Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

forest_moon

SQL 쿼리 예시 및 정리하기 본문

이것저것

SQL 쿼리 예시 및 정리하기

rokga 2022. 12. 21. 02:36

섹션 1: 데이터 필터링(feat. 시험 성적)

섹션 2: 집계함수(feat. 거래내역)

섹션 3: 시간값 필터링(feat. 거래내역)

 

데이터 필터링(feat. 시험 성적)

  • AND 필터링
장학생, 모두 90점 이상인 학생을 알려주세요.

SELECT                     -- 3: 모든 컬럼을 조회
  *
FROM                       -- 1: 학생 테이블에서
  students
WHERE                      -- 2: 다음 조건을 가지고 필터링 한 뒤
  math_score > 90
    AND
  english_score > 90
    AND
  programming_score > 90
;
  • OR 필터링
과락 학생, 적어도 한 과목이 75점 미만인 학생은?

SELECT                     -- 3: 모든 컬럼을 조회
  *
FROM                       -- 1: 학생 테이블에서
  students
WHERE                      -- 2: 다음 조건을 가지고 필터링 한 뒤
  math_score < 75
    OR
  english_score < 75
    OR
  programming_score < 75
;
  • 산술 연산과 별칭
각 학생의 총점은?
SELECT                           -- 2: 모든 컬럼 및 총점 조회
  *,
  math_score + english_score + programming_score AS total
FROM                             -- 1: 학생 테이블에서
  students
;

각 학생별 평균은?
SELECT                           -- 2: 모든 컬럼 및 평균 조회
  *,
  (math_score + english_score + programming_score) / 3 AS average_score
FROM                             -- 1: 학생 테이블에서
  students
;

 

  • 특정 컬럼만 가져오기
장학생2, 총점이 270 이상인 학생은 누구?

SELECT              -- 3: 특정 컬럼을 조회
  id,
  nickname,
  math_score + english_score + programming_score AS total_score,
  (math_score + english_score + programming_score) / 3 AS average_score
FROM                -- 1: 학생 테이블에서
  students
WHERE               -- 2: 다음 조건으로 필터링 한 뒤
  (math_score + english_score + programming_score) >= 270
;

집계함수(feat. 거래내역)

  • SUM 함수
    11: 거래내역 총합이 어떻게 될까?
    SELECT           -- 2: amount 컬럼의 총합을 계산
      SUM(amount)
    FROM             -- 1: 거래내역 테이블에서
      transactions
    ;
  • MAX와 MIN 함수
    12: 거래금액 중 최대/최소액이 어떻게 돼요?
    SELECT           -- 2: amount 컬럼의 최대값(MAX)과 최소값(MIN)을 계산
      MAX(amount),
      MIN(amount)
    FROM             -- 1: 거래내역 테이블에서
      transactions
    ;
  • COUNT 함수
    13: 구글과 총 몇번 거래했는지 알 수 있나요?
    SELECT           -- 3: 개수를 집계
      COUNT(*)
    FROM             -- 1: 거래내역 테이블에서
      transactions
    WHERE            -- 2: 거래 메시지가 Google 인 것의
      msg = 'Google'
    ;
  • AVG 함수
    14: 한번 거래할 때, 평균 얼마정도 거래되나요?
    SELECT                 -- 2: 평균을 집계
      ROUND(AVG(amount), 2)  -- ROUND(col, n): col을 소수점 n자리까지 반올림
    FROM                   -- 1: 거래내역 테이블에서
      transactions
    ;
  • DISTINCT 함수
    15: 거래처 목록, 중복 없이 뽑아주세요
    SELECT                 -- 2: 중복을 제거한 msg를 조회
      DISTINCT(msg)
    FROM                   -- 1: 거래내역 테이블에서 
      transactions
    ;

 

  • 거래내역 중, 입금 총액은?

 

SELECT           -- 3: 총합을 계산
  SUM(amount)
FROM             -- 1: 거래내역 테이블에서 
  transactions
WHERE            -- 2: 입금된 것들의
  amount > 0
;

 

시간값 필터링(feat. 거래내역)

  • 날짜 형식으로 필터링
    17: 21년 1월 거래금액 좀 알려주세요.
    SELECT                 -- 3: 조회 내용
      SUM(amount)
    FROM                   -- 1: 대상 테이블
      transactions
    WHERE                  -- 2: 필터링 조건
      -- 22년 1월 1일 이상
      created_at >= '2022-01-01'
        AND
      -- 22년 2월 1일 미만
      created_at < '2022-02-01'
    ;
  • EXTRACT 함수
    18: 21년 12월 거래액은요?
    -- EXTRACT(): 시간값에서 특정 속성을 숫자로 추출!
    -- 2021-11-26 10:32:02+09 => YEAR(2021), MONTH(11), ...
    
    SELECT                                  -- 3: 조회 내용
      SUM(amount)
    FROM                                    -- 1: 대상 테이블
      transactions
    WHERE                                   -- 2: 필터링 조건
      -- created_at 컬럼이 2021년인 것
      EXTRACT(YEAR  FROM created_at) = 2021
        AND
      -- created_at 컬럼이 12월인 것
      EXTRACT(MONTH FROM created_at) = 12
    ;
  • TO_CHAR 함수
    19: 21년 11월 거래액도 알려주세요
    -- TO_CHAR: 특정 값을 다양한 형식의 문자로 바꿈!
    -- 2021-11-26 10:32:02+09 >> 'YYYY-MM' => '2021-11'
    
    SELECT                            -- 3: 조회 내용
      SUM(*)
    FROM                              -- 1: 대상 테이블
      transactions
    WHERE                             -- 2: 필터링 조건
      -- create_at가 2021년 11월인 것
      TO_CHAR(created_at, 'YYYY-MM') = '2021-11'
    ;

 

20: 21년 11월과 22년 1월읠 거래액 총합은요?
-- TO_CHAR: 특정 값을 다양한 형식의 문자로 바꿈!
-- 2021-11-26 10:32:02+09 >> 'YYYY-MM' => '2021-11'

SELECT                                        -- 3: 조회 내용
  SUM(amount)
FROM                                          -- 1: 대상 테이블
  transactions
WHERE                                         -- 2: 필터링 조건
  TO_CHAR(created_at, 'YYYY-MM') = '2021-11'
    OR
  TO_CHAR(created_at, 'YYYY-MM') = '2022-01'
;