목록SQL (11)
Hi
https://school.programmers.co.kr/learn/courses/30/lessons/301650📌 문제 요약ECOLI_DATA 테이블에서 세대 정보를 파악하여 3세대에 해당하는 ID만 추출해야 하는 문제이다.ID는 대장균 개체PARENT_ID는 부모 개체최초 대장균 개체의 PARENT_ID는 NULL💡 문제 접근문제를 딱 보자마자 SQLD 공부했을 때 배웠던 CONNECT BY절을 사용해서 LEVEL을 확인해야겠다고 생각했다.이 방법은 Oracle에서 계층구조를 탐색할 때 사용하는데,해당 문제는 MySQL로만 풀이 할 수 있어서 CONNECT BY를 사용할 수 없었다.대신 지난 번에 공부한 재귀 CTE를 사용하여 MySQL로 풀이하였다.✅ 문제 풀이WITH RECURSIVE LEV..
https://school.programmers.co.kr/learn/courses/30/lessons/59413 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 요약시간 대별로 입양이 몇 건이 발생했는지 조회해야 한다.단, 입양 기록(DATETIME)이 존재하지 않는 시간대도 0건으로 출력되도록 해야 한다.출력 조건:시간대(HOUR) 0~23시까지 모두 출력각 시간대별 입양 건수 출력 (단, 없는 시간대도 0으로 출력)시간(HOUR) 오름차순 정렬 💡 문제 접근처음엔 단순히 시간으로 그룹핑해서 건수를 세면 된다고 생각했다.SELECT HOUR(DATETIME), COUNT(*)FROM A..
💡 재귀 CTE란?자기 자신을 참조하면서 반복적으로 데이터를 조회하는 CTE이다.MySQL 8.0 이상에서 사용 가능하며, WITH RECURSIVE 구문을 통해 정의할 수 있다.보통 다음과 같은 두 단계로 구성된다.Anchor member (기준 쿼리) : 재귀의 시작점을 지정Recursive member (재귀 쿼리) : 자기 자신을 호출하며 반복적으로 데이터 확장 💡 기본 문법WITH RECURSIVE cte_name (column_list) AS ( -- 1. Anchor member SELECT ... UNION ALL -- 2. Recursive member SELECT ... FROM cte_name WHERE ...)SELECT * FROM cte_..
https://school.programmers.co.kr/learn/courses/30/lessons/131117 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📍 문제 접근5월에 생산된 상품의 총판매량을 구해야 했는데 단순히 JOIN과 GROUP BY로 풀면 되겠다고 생각했다.총 판매량을 구하기 위해서는 FOOD_ORDER의 AMOUNT와 FOOD_PRODUCT의 PRICE를 곱해야 했다.그룹으로 묶은 다음 판매량을 구하려고 하니 복잡해질 것이라고 생각해서 with를 이용해서 풀었다(성공 코드2)근데 막상 풀이 해보니 굳이 필요 없을 것 같아 다시 풀었다(성공 코드1) 📍 성공 코드 1SELE..
https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 CASE WHEN 구문을 사용하여 세균 군집의 크기 비율을 계산하려고 했다. 처음 작성한 쿼리는 다음과 같았다.📍 실패 코드 1SELECT ID, CASE WHEN size_of_colony / (SELECT SUM(size_of_colony) FROM ecoli_data) * 100 코드를 보면 알겠지만 굉장히 비효율적이었다. 그래서 WITH 구문을 사용해 비율을 먼저 구했다.📍 실패 코드 2WITH..
MySQL에서 CTE (Common Table Expression)는 WITH 구문을 사용하여 임시 테이블을 생성하는 방법이다.CTE는 복잡한 쿼리를 보다 가독성 높게 작성할 수 있도록 도와주며, 쿼리의 재사용성과 유지보수성을 높이는 데 유용하다.✅ WITH 구문의 기본 구조WITH temporary_table AS ( SELECT column1, column2 FROM some_table WHERE condition)SELECT column1, column2FROM temporary_table;WITH 절을 사용하여 temporary_table이라는 임시 테이블을 생성한다.temporary_table을 일반 테이블처럼 SELECT 문에서 사용하여 데이터를 조회할 수 있다. ✅ WITH ..
[SQL] 윈도우 함수윈도우 함수의 정의와 순위, 집계, 이동 함수에 대한 내용을 정리했었다. [SQL] 윈도우 함수윈도우 함수(Window Function)란?윈도우 함수는 특정 그룹(윈도우, Window) 내에서 연산을 수행하는 함수로, SQL에서 데이터 분석 및 순위 계산에 자주 사용된다.기본적인 집계 함수(SUM, AVG, COUNT 등)와 유seungminleeee.tistory.com 오늘은 비율함수(Ratio Function)에 대해 정리하려고 한다. 비율 함수(Ratio Function)란?비율 함수는 전체 데이터에서 특정 행이 차지하는 비율을 계산하는 윈도우 함수이다.대표적인 비율 함수는 다음과 같다. RATIO_TO_REPORT()해당 행의 값이 전체 합에서 차지하는 비율을 반환P..
윈도우 함수(Window Function)란?윈도우 함수는 특정 그룹(윈도우, Window) 내에서 연산을 수행하는 함수로, SQL에서 데이터 분석 및 순위 계산에 자주 사용된다.기본적인 집계 함수(SUM, AVG, COUNT 등)와 유사하지만, 그룹별 결과를 개별 행과 함께 반환한다는 점이 다르다. 1. 윈도우 함수의 기본 구조윈도우_함수() OVER ( PARTITION BY 그룹_기준 ORDER BY 정렬_기준 ROWS BETWEEN 범위_설정)윈도우 함수(): 적용할 함수 (예: SUM(), AVG(), RANK(), ROW_NUMBER() 등)PARTITION BY: 데이터를 특정 그룹으로 나누는 기준 (선택 사항)ORDER BY: 윈도우 내에서 정렬할 기준 (선택 사항)ROW..