프로그래머스 | SQL 스터디 19 (재귀적 CTE) (완)
·
SQL/프로그래머스
SELECT⭐특정 세대의 대장균 찾기(Lv4)문제 설명​문제​풀이출처 :  https://20240228.tistory.com/258 이 문제를 Self join을 2번해서 (노가다) 풀었지만 더 좋은 풀이법이 있어서 출처를 남기고 올립니다. WITH에서 GNEREATION을 설정합니다 1세대의 경우, PARENT_ID가 NULL인 것이 1세대 입니다.UNION ALL로 중복이 없게 합치고추가적으로 PARENT_ID를 가지는 ID를 JOIN해서 세대를 추가합니다. 이렇게 푸는 것이 더 좋은 이유는 유지, 보수 측면에서 더 용이하기 때문입니다.세대라는 칼럼을 추가해서 향후에도 세대를 찾고 싶을때 더 편하게 찾을 수 있죠WITH RECURSIVE CTE AS ( SELECT ID, 1 AS GENERA..
프로그래머스 | SQL 스터디 18
·
SQL/프로그래머스
SELECT부모의 형질을 모두 가지는 대장균 찾기(Lv2)문제 설명​문제​풀이SELECT로 ID, GENOTYPE, PARENT_GENOTYPE를 조회 JOIN에서 PARENT_ID를 가지는 테이블(부모가 있는 ID)을 self-join으로 연결 WHERE에서 E.GENOTYPE과 D.GENOTYPE을 비트 연산자를 한 값이 D.GENOTYPE으로 설정(부모의 형질을 모두 가지는 개체를 찾기 위한 쿼리) ORDER BY 에서 ID로 오름차순 정렬SELECT E.ID, E.GENOTYPE, D.GENOTYPE PARENT_GENOTYPEFROM ECOLI_DATA EJOIN ECOLI_DATA D ON E.PARENT_ID = D.IDWHERE (D.GENOTYPE & E.GENOTYPE) = D.GENO..
프로그래머스 | SQL 스터디 17
·
SQL/프로그래머스
SELECT특정 형질을 가진 대장균 찾기(Lv1)문제 설명​문제​풀이SELECT로 COUNT를 조회 WHERE에서 GENOTYPE이 2번 형질을 가지지 않으면서(GENOTYPE&2 =0)GENOTYPE이 1번이나 3번 형질을 가지게 설정(GENOTYPE&1 > 0 or GENOTYPE&4 > 0)SELECT COUNT(*) AS CountFROM ECOLI_DATA WHERE GENOTYPE&2 =0 AND (GENOTYPE&1 > 0 or GENOTYPE&4 > 0); 대장균의 크기에 따라 분류하기2 (Lv3)문제 설명​문제​풀이WITH에서 NTILE(4)를  SIZE_OF_COLONY별로 설정하고 COLONY_RATE라고 지칭 SELECT로 ID, COLONY_NAME을 조회문제에서 요구한 조..
프로그래머스 | SQL 스터디 16
·
SQL/프로그래머스
SELECT대장균들의 자식의수 구하기(Lv3)문제 설명​문제​풀이SELECT로 ID, CHILD_COUNT를 조회 JOIN에서 selfjoin으로 ID와 PARENT_ID를 LEFT JOIN으로 연결* 개념적으로는 이렇게 구현해야 한다는 것을 알았지만, 방법을 잘 몰라 처음에는 WHERE ID=PARENT_ID로 구현함WHERE ID = PARENT_ID의 의미:이 조건은 동일한 개체가 부모 개체와 자식 개체가 되도록 강제합니다.즉, 동일한 레코드의 ID 값과 PARENT_ID 값이 같아야 하는 경우를 찾는다는 의미가 됩니다.그러나, 문제에서는 부모 개체의 ID와 자식 개체의 PARENT_ID가 서로 다른 행에 있어야 합니다.이런 문제점 때문에 self join으로 left join을 하는 것이 올바름!..
프로그래머스 | SQL 스터디 15 (SUBSTIRNG)
·
SQL/프로그래머스
SELECT가장 큰 물고리 10마리 구하기(Lv1)문제 설명​문제​풀이SELECT로 ID, LENGTH를 조회 ORDER BY에서 LENGTH 내림차순, ID 오름차순 정렬 LIMIT 10으로 상위 10마리 출력SELECT ID, LENGTHFROM FISH_INFOORDER BY LENGTH DESC, ID ASCLIMIT 10; 특정 물고리를 잡은 총 수 구하기(Lv2)문제 설명​문제​풀이SELECT로 COUNT로 FISH_COUNT를 조회 JOIN으로 공통 컬럼인 FISH_TYPE으로 두 테이블을 연결  WHERE에서 BASS, SNAPPER라는 FISH_NAME을 가진 것으로 제한SELECT COUNT(*) FISH_COUNTFROM FISH_INFO IJOIN FISH_NAME_INFO N ON..
프로그래머스 | SQL 스터디 14 (Union, Union all)
·
SQL/프로그래머스
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_AMOUNTFROM ( -- 온라인 데이터 SELECT SALES_DATE, PRODUCT_ID, U..
프로그래머스 | SQL 스터디 13
·
SQL/프로그래머스
SELECT업그레이드 된 아이템 구하기(Lv2)문제 설명​문제 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬주세요. ​풀이SELECT로 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY) 를 조회 JOIN에서 ITEM_INFO, ITEM_TREE를 공통 컬럼인 ITEM_ID로 연결 WHERE에서 희귀도가 RARE인 ITEM_ID이 PARENT_ID에 있는 것으로 제한 ORDER BY에서 ITEM_ID 순으로 내림차순 정렬SELECT I.ITEM_ID ,..
프로그래머스 | SQL 스터디 12
·
SQL/프로그래머스
SELECT모든 레코드 조회하기(Lv1)문제 설명​문제 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다. ​풀이SELECT로 모든 정보를 조회 ORDER BY에서 ANIMAL_ID 순으로 오름차순 정렬SELECT *FROM ANIMAL_INSORDER BY ANIMAL_ID; 역순 정렬하기(Lv1)문제 설명​문제 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다. ​풀이SELECT로 NAME, DATETIME을 조회 ORDER BY에서 ANIMAL_ID 순으로 내림차순 ..