본문 바로가기

Language/SQL

배운게 나오긴 하는구나!

COUNT(column_name) 해당 컬럼의 개수 세기
GROUP BY column_name 해당 컬럼을 기준으로 그룹화 하기, 여러개 가능
HAVING 조건 그룹화 후 그룹 필터링 *(WHERE은 행 필터링)
UNION ALL 추출해온 두 데이터 결합
NULL AS column_name 해당 컬럼의 자료는 NULL값으로 변경

오랜만에 꽤 생각해야 하는 SQL문을 만났다.

결합과 조건만큼 데이터 추출할 때 중요한 게 있을까?

 

https://school.programmers.co.kr/learn/courses/30/lessons/131536

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

조건 1. 동일한 회원이 동일한 상품을 재구매한 데이터

조건 2. 재구매 회원 ID와 재구매 상품 ID출력

조건 3. 회원 ID 기준 오름차순 같으면, 상품 ID기준 내림차순

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/131537

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

조건 1. 두 테이블에서 데이터 추출

조건 2. 2022년 3월의 상품 판매 데이터의 판매 날짜, 상품 ID, 유저 ID, 판매량 출력

조건 3. OFFLINE_SALE테이블의 판매 데이터의 USER_ID는 NULL값으로 표시

조건 4. 판매일 기준 오름차순 같다면, 상품 ID기준 오름차순 같다면, 유저 ID기준 오름차순

SELECT DATE_FORMAT(A.SALES_DATE,'%Y-%m-%d') AS SALES_DATE, 
A.PRODUCT_ID, A.USER_ID, A.SALES_AMOUNT
FROM ONLINE_SALE A
WHERE SALES_DATE LIKE "2022-03%"

UNION ALL

SELECT DATE_FORMAT(B.SALES_DATE,'%Y-%m-%d') AS SALES_DATE, 
B.PRODUCT_ID, NULL AS USER_ID, B.SALES_AMOUNT
FROM OFFLINE_SALE B
WHERE SALES_DATE LIKE "2022-03%"

ORDER BY SALES_DATE,PRODUCT_ID,USER_ID

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

SQL Cheat Sheet  (0) 2023.07.09
Case 문을 통해 조건에 맞는 경우 추출하기  (0) 2023.04.20
Round  (0) 2023.03.30
안 쓰면 까먹는다.  (0) 2023.03.29
MySQL 에서는 ISNULL 대신 IFNULL  (0) 2023.03.24