본문 바로가기

DB

[My_SQL] 특정 세대의 대장균 찾기 문제 무식하게 데이터를 뽑아냈다...PARENT_ID가 NULL 인 데이터의 ID를 1세대 A라하고 PARENT_ID가 A인 값들을 2세대 B PARENT_ID가 B인 값들을 3세대 C로 판단하여 출력했다.코드WITH GENERATION AS ( SELECT ID FROM ECOLI_DATA  WHERE PARENT_ID IN (SELECT ID                     FROM ECOLI_DATA                      WHERE PARENT_ID IN (SELECT ID                                         FROM ECOLI_DATA                                         WHERE PARENT_ID IS N.. 더보기
[My_SQL] 부서별 평균 연봉 조회하기 문제 두 테이블을 DEPT_ID를 기준으로 조인하고 그룹화한다. 이후 ROUND와 AVG를 이용하여 SAL의 평균 값을 계산하고 ID와 부서명과 함께 출력한다.코드SELECT emp.DEPT_ID, dept.DEPT_NAME_EN, ROUND(AVG(emp.SAL)) AS 'AVG_SAL' FROM HR_EMPLOYEES emp JOIN HR_DEPARTMENT dept ON emp.DEPT_ID = dept.DEPT_ID GROUP BY dept.DEPT_ID ORDER BY 3 DESC; 더보기
[My_SQL] 오랜 기간 보호한 동물(2) 문제 DATEDIFF를 이용하여 보호일 - 입양일이 가장 큰 값 2개를 출력한다.코드WITH value AS (SELECT ai.ANIMAL_ID, DATEDIFF(ao.DATETIME, ai.DATETIME) AS 'DATETIME', ai.NAME FROM ANIMAL_INS ai JOIN ANIMAL_OUTS ao ON ai.ANIMAL_ID = ao.ANIMAL_ID ORDER BY DATETIME DESC limit 2) SELECT ANIMAL_ID, NAME FROM value; 더보기
[My_SQL] ROOT 아이템 구하기 문제 두 테이블을 ITME_ID를 기준으로 조인하고 IS NULL을 이용하여 PARENT_ITEM_ID가 NULL 인 값들을 뽑아낸다.코드SELECT ii.ITEM_ID, ii.ITEM_NAME FROM ITEM_INFO ii JOIN ITEM_TREE it ON ii.ITEM_ID = it.ITEM_ID WHERE it.PARENT_ITEM_ID IS NULL ORDER BY 1 ASC; 더보기
[My_SQL] 월별 잡은 물고기 수 구하기 문제 MONTH와 그룹화를 사용하면 쉽게 풀 수 있는 문제이다.코드SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS 'MONTH' FROM FISH_INFO GROUP BY MONTH(TIME) ORDER BY 2 ASC; 더보기
[My_SQL] 특정 물고기를 잡은 총 수 구하기 문제 FISH_TYPE을 기준으로 두 테이블을 조인한 뒤 WHERE절에서 FISH_NAME이 BASS나 SNAPPER인 값을 뽑아내고 COUNT() 해준다. 코드SELECT COUNT(*) AS 'FISH_COUNT' FROM FISH_INFO fi JOIN FISH_NAME_INFO fni ON fi.FISH_TYPE = fni.FISH_TYPE WHERE fni.FISH_NAME = 'BASS' OR fni.FISH_NAME = 'SNAPPER'; 더보기
[My_SQL] 분기별 분화된 대장균의 개체 수 구하기 문제 MONTH를 활용해 분기 날짜에서 월 정보를 뽑아내어 분기를 결정한 데이터를 뽑아내고 해당 데이터를 ECOLI_DATA 테이블에 조인하여 그룹화하고 COUNT 메소드로 수를 센다. 코드WITH value AS (SELECT ID,  CASE WHEN MONTH(DIFFERENTIATION_DATE)      WHEN MONTH(DIFFERENTIATION_DATE)      WHEN MONTH(DIFFERENTIATION_DATE)      ELSE '4Q'  END AS 'QUARTER' FROM ECOLI_DATA) SELECT value.QUARTER, COUNT(*) AS 'ECOLI_COUNT' FROM ECOLI_DATA ed JOIN value ON ed.ID = value.ID GRO.. 더보기
[My_SQL] 대장균들의 자식의 수 구하기 문제 부모 id를 기준으로 null이 아닌 값들을 그룹화한 테이블을 이용하여 문제를 풀이한다ECOLI_DATA에 해당 그룹화 테이블을 조인하고 COALESCE 함수를 통해 합한다.코드SELECT a.id, COALESCE(b.count, 0) AS CHILD_COUNT FROM ECOLI_DATA a LEFT JOIN (         SELECT parent_id, COUNT(*) AS COUNT         FROM ECOLI_DATA         GROUP BY parent_id         HAVING parent_id IS NOT NULL     ) b ON a.id = b.parent_id ORDER BY 1 ASC; 더보기