[프로그래머스 SQL] Lv.4 - 오프라인/온라인 판매 데이터 통합하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/131537 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이두 테이블의 데이터를 합쳐야 하므로 UNION ALL 키워드를 사용한다.먼저 ONLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다.그리고 OFFLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다. 이 테이블에는 유저 ID가 없으므로 그냥 NULL로 조회한다.두 테이블 모두 판매 날짜의 경우 DATE_FOR..
[프로그래머스 SQL] Lv.4 - 서울에 위치한 식당 목록 출력하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이REST_INFO 테이블과 REST_REVIEW 테이블을 조인한다.이때 REST_REVIEW 테이블에서 식당별 리뷰 평균점수를 구해야 하기 때문에 그냥 조인하면 안 되고, 서브쿼리를 사용한다.GROUP BY로 식당별로 그룹핑해주고, 그룹핑된 식당의 리뷰 평균 점수를 ROUND와 AVG 키워드를 사용해서 구한다.이렇게 서브쿼리로 구해진 임시 리뷰 평균 점수 테이블과 조인한다.서울에 위치한 행을 필터링한다.평균점수를 기준으로 내림차순, ..
[프로그래머스 SQL] Lv.3 - 대장균의 크기에 따라 분류하기 2
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이ID를 기준으로 오름차순 정렬한다.ID와 분류된 이름을 조회한다. 분류는 개체의 크기 기준 4등급으로 분류해야 한다. 따라서 윈도우 함수 중에 비율 함수 NTILE 키워드를 사용한다. 개체의 크기를 내림차순 정렬했을 때 이것을 4등급으로 분류한다. 총 데이터의 수는 항상 4의 배수이기 때문에 특별히 고려할 것은 없어 보인다. (윈도우 함수는 항상 OVER 키워드와 함께 사용한다.)SELECT ID, CASE NTILE(4..
[프로그래머스 SQL] Lv.3 - 대장균의 크기에 따라 분류하기 1
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/299307 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이ID를 기준으로 오름차순 정렬한다.ID와 분류를 조회한다. 분류는 CASE ~ WHEN 키워드를 사용해서 개체의 크기에 따라 적절한 이름으로 조회한다.SELECT ID, CASE WHEN SIZE_OF_COLONY
[프로그래머스 SQL] Lv.3 - 대장균들의 자식의 수 구하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/299305 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이ECOLI_DATA 테이블을 자체 조인한다. 조인 조건은 ID와 PARENT_ID가 같아야 하며 이때 LEFT JOIN을 해주는 것이 중요하다. 자식이 없을 때 0을 출력해야 하기 때문이다.GROUP BY로 부모 ID를 기준으로 그룹핑해 준다.ID를 기준으로 오름차순 정렬한다.ID와 자식의 수를 조회한다. 자식의 수는 COUNT 키워드로 조회한다.SELECT A.ID, COUNT(B.ID) AS CHILD_COUNTFROM..
[프로그래머스 SQL] Lv.2 - 부모의 형질을 모두 가지는 대장균 찾기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/301647 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이ECOLI_DATE 테이블을 자체 조인한다. PARENT_ID와 ID가 같은 행끼리 조인한다.부모의 형질을 모두 보유한 행을 필터링한다. 필터링 조건은 부모의 형질을 모두 보유해야 하므로 부모와 자식의 형질끼리 AND 연산했을 때 부모의 형질과 같아야 한다.ID를 기준으로 오름차순 정렬한다.대장균 ID, 대장균 형질, 부모 대장균 형질을 조회한다.SELECT sub.ID, sub.GENOTYPE, m.GENOTYPE ..
[프로그래머스 SQL] Lv.2 - 특정 물고기를 잡은 총 수 구하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/298518 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이FISH_INFO 테이블과 FISH_NAME_INFO 테이블을 조인한다.FISH_NAME_INFO 테이블의 물고기 이름이 "BASS"와 "SNAPPER"인 행을 필터링한다.카운트 쿼리로 조회된 행의 수를 조회한다.SELECT COUNT(*) AS FISH_COUNTFROM FISH_INFO A JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPEWHERE B.FISH_NAME IN('BASS..
[프로그래머스 SQL] Lv.2 - 조건에 맞는 개발자 찾기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/276034 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이SKILLCODES 테이블과 DEVELOPERS 테이블을 조인한다. 이때 ON절은 CODE와 SKILL_CODE를 AND 연산한다.NAME인 "Python" 또는 "C#"인 행을 필터링한다.ID를 기준으로 오름차순 정렬한다.ID, 이메일, 이름, 성을 조회한다. 한 개발자가 두 개의 스킬을 모두 가질 수 있으므로 DISTINCT 키워드로 중복 조회된 행을 처리한다.SELECT DISTINCT(ID), EMAIL, ..
[프로그래머스 SQL] Lv.2 - 업그레이드 된 아이템 구하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/273711 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이ITEM_INFO 테이블과 ITEM_TREE 테이블을 조인한다.서브 쿼리로 ITEM_TREE 테이블의 PARENT_ITEM_ID에 해당하는 아이템의 희귀도가 "RARE"인 행을 필터링한다. 아이템 ID를 기준으로 내림차순 정렬한다.아이템 ID, 아이템 명, 아이템의 희귀도를 조회한다.SELECT B.ITEM_ID, A.ITEM_NAME, A.RARITYFROM ITEM_INFO A JOIN ITE..
[프로그래머스 SQL] Lv.2 - 재구매가 일어난 상품과 회원 리스트 구하기
·
SQL/SELECT
https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이GROUP BY 키워드로 회원 ID와 상품 ID를 그룹핑한다. 이때 그룹핑된 행이 2개 이상이면 재구매가 일어난 것이므로 HAVING 키워드로 조건을 걸어준다.회원 ID를 기준으로 오름차순, 상품 ID를 기준으로 내림차순 정렬한다.회원 ID와 상품 ID를 조회한다.SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_ID ..