프로그래머스 | SQL 스터디 14 (Union, Union all)

2024. 9. 16. 12:44·SQL/프로그래머스
목차
  1. SELECT

SELECT

★오프라인/온라인 판매 데이터 통합하기 (Lv4)

문제 설명

 

​

문제

​

풀이

SELECT로 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 조회

 

FROM에서 온라인 데이터와 오프라인 데이터를 각각 UNION ALL을 통해서 병합

* 오프라인 데이터의 USER_ID는 NULL 처리

* 22년 3월의 데이터로 한정

 

ORDER BY에서 SALES_DATE, PRODUCT_ID, USER_ID 순으로 오름차순 정렬

※ 모든 서브쿼리에는 별칭이 필수이다!!

SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') SALES_DATE, 
	PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM (
	-- 온라인 데이터
    SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
    FROM ONLINE_SALE
    WHERE SALES_DATE LIKE '2022-03%'
    
    UNION ALL
    
    -- 오프라인 데이터
    SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
    FROM OFFLINE_SALE
    WHERE SALES_DATE LIKE '2022-03%'    
) AS CombinedSales
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;

 

※ UNION  vs. UNION ALL

UNION은 중복 제거, UNION ALL은 중복 허용!

 

 


어린 동물 찾기(Lv1)

문제 설명

​

문제

​

풀이

SELECT로 ANIMAL_ID, NAME을 조회

 

WHERE에서 젊은 동물이란 INTKAE_CONDITION이 'Aged'가 아닌 것을 뜻함

 

ORDER BY에서 ANIMAL_ID를 오름차순 정렬

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;

동물의 아이디와 이름(Lv1)

문제 설명

​

문제

​

풀이

SELECT로 ANIMAL_ID, NAME을 조회

 

ORDER BY에서 ANIMAL_ID를 오름차순 정렬

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

조건에 맞는 개발자 찾기(Lv2)

문제 설명

​

문제

​

풀이

SELECT로 ID, EMAIL, FIRST_NAME, LAST_NAME을 조회

 

WHERE에서 비트연산자 &을 이용하여 SKILL_CODE가 skillcodes테이블에 있는 Python, C#의 code의 합들과 대응하는 것들로 제한

 

ORDER BY에서 ID를 오름차순 정렬

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS D
WHERE SKILL_CODE & (SELECT SUM(CODE)
                   FROM SKILLCODES
                   WHERE NAME IN ('Python','C#'))
ORDER BY ID;

 


GROUP BY

 노선별 평균 역 사이 거리 조회하기(Lv2)

문제 설명

​

문제

 

풀이

SELECT에서 노선, 총 누계거리, 평균 역 사이 거리를 조회

 

GROUP BY에서 ROUTE로 그룹화 

​

ORDER BY에서 처음 TOTAL_DISTANCE를 기준으로 정렬을 하면 오답이 나옴 → CONCAT으로 km가 추가된 문자열이기 때문에 정렬이 올바르게 되지 않았음 → 숫자만 기준으로 정렬!!

SELECT ROUTE, 
    CONCAT(ROUND(SUM(D_BETWEEN_DIST),1),'km') TOTAL_DISTANCE,
    CONCAT(ROUND(AVG(D_BETWEEN_DIST),2),'km') AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
GROUP BY ROUTE
ORDER BY ROUND(SUM(D_BETWEEN_DIST),1) DESC;

 

 

 

String, Date

오랜 기간 보호한 동물(2) (Lv3)

문제 설명

 

문제

​

풀이

SELECT에서 동물의 아이디, 이름을 조회

 

JOIN에서 두 테이블을 연결

​

ORDER BY에서 out테이블의 datetime과 ins테이블의 datetime의 차이를 내림차순 정렬

 

LIMIT으로 2개만 출력하게 설정

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
JOIN ANIMAL_INS I ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY (O.DATETIME - I.DATETIME) DESC
LIMIT 2;
저작자표시 비영리 변경금지 (새창열림)

'SQL > 프로그래머스' 카테고리의 다른 글

프로그래머스 | SQL 스터디 16  (1) 2024.09.18
프로그래머스 | SQL 스터디 15 (SUBSTIRNG)  (2) 2024.09.17
프로그래머스 | SQL 스터디 13  (0) 2024.09.15
프로그래머스 | SQL 스터디 12  (0) 2024.09.15
프로그래머스 | SQL 스터디 11 (비트연산자 &)  (1) 2024.09.11
  1. SELECT
'SQL/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | SQL 스터디 16
  • 프로그래머스 | SQL 스터디 15 (SUBSTIRNG)
  • 프로그래머스 | SQL 스터디 13
  • 프로그래머스 | SQL 스터디 12
kimmalgu
kimmalgu
DA(데이터 분석가) 취준생 블로그
  • kimmalgu
    kimmalgu 님의 블로그
    kimmalgu
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 통계 (3)
      • [패캠] 데이터분석 부트캠프 (10)
        • 프로젝트 (2)
        • 수업 정리 (8)
      • 파이썬 (8)
        • 통계전산처리 (7)
      • SQL (27)
        • 프로그래머스 (20)
        • HackerRank (5)
        • LeetCode (1)
      • 코테 (0)
      • 독후감 (5)
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.0
kimmalgu
프로그래머스 | SQL 스터디 14 (Union, Union all)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.