본문 바로가기

전체 글43

[MySQL] 재귀 (RECURSIVE) 테이블 생성 MySQL에서는 CTE (Common Table Expression)를 활용하여 재귀 테이블을 생성할 수 있다.CTE를 활용하게 된다면, 재귀 쿼리를 이용해 메모리 상에 가상의 테이블을 저장하게 된다.이를 통해, 시리즈 및 계층을 생성해서 다양하게 활용할 수 있다. 재귀 쿼리 사용법은 아래와 같다.WITH RECURSIVE CTE (컬럼명1, 컬럼명2, ...) AS(SELECT 컬럼명1, 컬럼명2, ... -- 초기 값FROM TABLEWHERE 제어문UNION ALLSELECT 컬럼명1, 컬럼명2, ... -- 초기 값 이후 재귀하면서 계속 UNION 할 값FROM CTEINNER JOIN ON CTE.컬럼명 = TABLE.컬럼명 -- 요구하는 조건 잘 확인하기WHERE 제어문)SELECT *FROM.. 2024. 7. 13.
[SQL] 프로그래머스 - 특정 세대의 대장균 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/301650 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. Problem 3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요. 2. Analysis1. 재귀 쿼리를 사용해서 ID별 계층 LEVEL을 구하는 계산식을 활용하면 3세대 뿐만 아니라 N세대를 구하는 문제가 나왔을 때에도 편하게 풀 수 있을 것이라고 생각함.WITH RECURSIVE CTE(ID, PARENT_ID, LE.. 2024. 7. 13.
[SQL] 프로그래머스 - 부서별 평균 연봉 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/284529 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. Problem 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문을 작성해주세요. 평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은 AVG_SAL로 해주세요. 결과는 부서별 평균 연봉을 기준으로 내림차순 정렬해주세요. 2. Analysis1. 부서 별 직원들의 연봉을 알기 위해서는 부서에 포함된 직원들을 먼저 알아야 하니 부서 테이블과 직원 테이블 2개를 조인함FROM HR_E.. 2024. 7. 13.
[SQL] 프로그래머스 - 물고기 종류 별 대어 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/293261  1. Problem 물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요. 결과는 물고기의 ID에 대해 오름차순 정렬해주세요.2. Analysis1. 물고기 종류 별로 가장 큰 물고기를 구하기SELECT FISH_TYPE ,MAX(LENGTH) AS LENGTH_MAXFROM FISH_INFOGROUP BY FISH_TYPE2. 1번에서 구한 테이블과 FISH_INFO 테이블의 FISH_TYPE과 LENGTH의 값이 일치하는 조건을 주어 종류 별로 가장 큰 물고기 ID를 구할 수 있다. WHERE (F.FISH_TYPE, .. 2024. 7. 13.