정처기 실기 준비 #3- SQL 기초를 잡아보자!

Anny·2024년 1월 21일
0

SQL은 사실 컴퓨터활용능력 1급 취득 하면서 학습한 경험이 있는 친구 입니다.
부분적으로 기억이 나서 준비하는 김에 다시 정리해보자! 하고 작성하는 SQL 기초를 잡아보자!

*일 벌리고 수습하는 성격 상 차차 업데이트 될 예정

1. DATE_FORMAT

SELECT DATE_FORMAT(Column_Name, '%y-%m-%d')

날짜를 지정한 형식으로 출력

SELECT문 뒤에 올 수도 있고, 날짜 포맷의 규격을 유지하기 위해 WHERE문 뒤에 사용될 수도 있다.

코테랑 정처기 기출에서 주로 쓰이는 건 하기와 같다고 감히 예상. (틀릴 가능성 농후)

구분기호출력 결과
%Y4자리 년도 (1999)
%y2자리 년도 (99)
%M영문 긴 월 (July)
%b영문 짧은 월 (Jul)
%m두 자리 숫자 월 (07)
%c한 자리 숫자 월 (7)
%d두 자리 일자 (01)
%e한 자리 일자 (1)
%W영문 긴 요일 (Monday)
%a영문 짧은 요일 (Mon)

2. GROUP_BY & HAVING

  • GROUP_BY는 복수로 존재하는 ROW를 합계하여 선별하는데 사용이 됨.

    사용을 위해선 하기를 주의할 것!

    • NULL 값이 존재하는 ROW 제외
    • SELECT에서 사용하는 것과 같은 구문에선 사용 불가
    • WHERE 구문 에서 사용 불가능
    • WHERE 구문은 GROUP BY보다 먼저 실행 됨.
  • HAVING은 WHERE에서 사용 할 수 없는 집계 함수의 구문을 적용 (GROUP BY 등 집계함수에 개한 WHERE 구문)

프로그래머스 SQL 코테 중 일부를 예시로 들자면,

-- 문제:
-- 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 
-- 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요.

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*)>=2

-- HAVING 뒤에는 SELECT가 필수적으로 오지 않아도 됨을 알 수 있움

헷갈리지 말아야 할 부분!

SELECT USER_ID, COUNT(*) AS "COUNT"
FROM ONLINE_SALE
WHERE COUNT(*)>=2
GROUP BY USER_ID, PRODUCT_ID

--라고 되어있다고 치자, USER_ID와 PRODUCT_ID으로 GROUP화 되기 이전에 WHERE COUNT가 먼저 명령되기 때문에 작동이 되지 않음.
-- 다시 깨닫는 HAVING의 필요성과 GROUP BY와의 관계성

3. UNION ALL

SELECT에 나열된 컬럼명의 순서가 두가지 SELECT문이 동일해야 함

-- 만약 다음과 같이 썼으면 실행이 되지 않음
-- 저기 테이블의 SELECT 또한 가,나,다,라 순서로 입력시켜야 함
SELECT 가,
		나, 
		다, 
		라
FROM 어쩌고
WHERE 저기
UNION ALL
SELECT 가,
		라,
		다,
		나
FROM 저쩌고
WHERE 저기
  1. IFNULL
    분명 컴활 준비할 때 봤던거 같은데 미친 기억력으로 잊어버린,,,
    COLUMN 값이 없을(NULL일) 경우 대체하는 출력문을 적고 싶을 때 사용
SELECT IFNULL(어쩌고, '대체문')
profile
Newbie

0개의 댓글