취뽀 기록

#열심히 살자 #취업 #공부

SQL/[프로그래머스] 9

[Level 4] 특정 세대의 대장균 찾기

SELECT T3.ID FROM ECOLI_DATA T1 JOIN ECOLI_DATA T2 JOIN ECOLI_DATA T3 WHERE T1.PARENT_ID IS NULL AND T2.PARENT_ID = T1.ID AND T3.PARENT_ID = T2.ID ORDER BY ID 과정은 이렇다. 1. 1세대 대장균은 PARENT_ID가 NULL값이어야 하므로 WHERE 조건에 추가하기 2. T2는 2세대 대장균이다. 따라서 T2의 부모ID가 T1 ID가 되도록 조건 추가 3. 마찬가지로 T3는 3세대 대장균이다. 따라서 T3의 부모ID가 T2의 ID가 되도록 조건 추가

[Level 2] 조건에 맞는 개발자 찾기(★)

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS WHERE SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#') >0 OR SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python') >0 ORDER BY ID * 비트 연산을 이용해서 풀어야 함 SELECT CODE FROM SKILLCODES WHERE NAME = 'C#' 해당 코드 의미 : SKILLCODES 테이블에서 코드 이름이 C#인 코드 WHERE 조건으로 C# 코드와 SKILL_CODE의 비트연산 수행해야 함. => 0보다 크다는 의미는 포함하고 있다는 의미이기 때문에 C# 스킬..

[LEVEL 3] 대장균들의 자식의 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/299305 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1. T1 테이블을 만들어 PARENT_ID별로 자식 수를 COUNT하여 CNT 컬럼을 생성한다. 2. ECOLI_DATA와 T1 테이블을 LEFT JOIN 하는데, 여기서 포인트는 T1의 PARENT_ID와 ECOLI_DATA의 ID를 기준으로 조인하는 것 (이거떄메 20분 헤맴) 3. CASE WHEN 구문 이용해서 CNT 컬럼이 NULL 값이면 0값 지정 WITH T1 AS ( ..

[Level 4] 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/284528 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1. 문제에 쓰여있지는 않지만, HR_GRADE 테이블의 HALF_YEAR 열의 1과 2의 평균을 내어 점수 계산해야 함. 2. CASE WHEN 구문을 이용하여 GRADE 컬럼과 BONUS 컬럼 생성 SELECT EMP.EMP_NO, EMP.EMP_NAME, CASE WHEN SCORE >= 96 THEN 'S' WHEN SCORE >= 90 THEN 'A' WHEN SCORE >=..

[Level3] 대장균의 크기에 따라 분류하기 1

문제 설명 대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다. 다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다. ECOLI_DATA 테이블의 구조는 다음과 같으며, ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE 은 각각 대장균 개체의 ID, 부모 개체의 ID, 개체의 크기, 분화되어 나온 날짜, 개체의 형질을 나타냅니다. 최초의 대장균 개체의 PARENT_ID 는 NULL 값입니다. 문제 대장균 개체의 크기가 100 이하라면 'LOW', 100 초과 1000 이하라면 'MEDIUM', 1000 초과라면 'HIGH' 라고 분류합니다. 대장균 개체의..

[SQL][프로그래머스] 저자 별 카테고리 별 매출액 집계하기

문제 설명 다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK), 저자 정보(AUTHOR) 테이블입니다. BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다. 문제 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. 2022년 1월의 도서 별 총 매출액은 도서 ID 가 1 인 도서가 총 3권 * 10,000원 = 30,000원, 도서 ID 가 ..

[SQL][프로그래머스] 주문량이 많은 아이스크림들 조회하기

문제 설명 다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 7월의 아이스크림 주문 정보를 담은 JULY 테이블입니다. FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다. FIRST_HALF테이블의 SHIPMENT_ID는 JULY테이블의 SHIPMENT_ID의 외래 키입니다. JULY 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 은 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 ..

[SQL][프로그래머스] 우유와 요거트가 담긴 장바구니

문제 설명 CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다. 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 예시 풀이 ## 풀이1 # 우유와 요거트를 구매한 카트id 추출 WITH T1 AS (SELECT cart_id, name, price FROM cart_products WHERE name..

[SQL][프로그래머스] 취소되지 않은 진료 예약 조회하기

문제 설명 다음은 환자 정보를 담은 PATIENT 테이블과 의사 정보를 담은 DOCTOR 테이블, 그리고 진료 예약목록을 담은 APPOINTMENT에 대한 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다. APPOINTMENT 테이블은 다음과 같으며 APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNC..