본문 바로가기

코딩테스트/SQL12

[SQL Lv3] 즐겨찾기가 가장 많은 식당 정보 출력하기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석1. 음식 분류별로 GROUP BY를 하기2. GROUP BY의 max값을 활용해서 가장 많은 좋아요를 받기3. 주의점은 GROUP BY로 MAX(FAVORITES)를 뽑는다고 해서 이 최대값이 어떤 REST_ID와 연결되어있는지 알 수 없다. 문제 풀이1. where절 서브쿼리로 각 음식 타입마다 가장 많은 좋아요를 테이블을 뽑아와서 IN절로 비교한다.SELECT FOOD_TYPE, REST_ID,REST_NAME,FAVORITESFROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN ( SELECT FOOD_T.. 2024. 11. 26.
[SQL Lv4] 주문량이 많은 아이스크림들 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/133027 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석1. TOTAL_ORDER 상위 랭킹 3개를 출력하는 문제이다 문제 풀이1. CTE를 이용해 미리 FIRST_HALF과 JULY 테이블의 총합을 구해서 정렬한 파생 테이블을 만들었다.2. 그리고 LIMIT을 활용해 상위 3개만 뽑아오도록 구현했다. WITH RANKDATA AS ( SELECT F.FLAVOR, SUM(F.TOTAL_ORDER + J.TOTAL_ORDER) AS TOTAL_ORDER .. 2024. 11. 18.
[SQL Lv4] 특정 세대의 대장균 찾기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 해석3레벨 노드의 개체 ID를 출력하는 문제. 문제 해결계층형 쿼리로 푸려고 했으나 SQL문법에서는 START WITH랑 CONNECT BY절을 지원하지 않아 JOIN으로 해결했다.INNER JOIN으로 각 레벨별 계층을 만들어서 3레벨 노드랑 JOIN시키는 형태로 풀었다. SELECT ED3.IDFROM ECOLI_DATA AS ED1INNER JOIN ECOLI_DATA AS ED2ON ED1.ID = ED2.PARENT_ID AND ED1.PARENT_ID IS NULLINNER JOIN ECOLI_DATA ED3ON ED2.ID = ED3.PAR.. 2024. 11. 18.
[SQL Lv3] 대장균의 크기에 따라 분류하기 1 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해설스칼라 서브쿼리를 통해 푸는문제이다.서브쿼리 내에서 where절로 ID값이 일치한지 먼저 뽑아낸다음 CASE문으로 SIZE를 조회해서 각 사이즈에 맞게 출력하면 된다. SELECT A.ID, (SELECT CASE WHEN B.SIZE_OF_COLONY 2024. 11. 18.
[SQL Lv3] 대장균들의 자식 수 구하기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석1. 대장균 개체의 ID와 자식의 수를 출력하는 SQL문을 작성해야한다.2. 스칼라 서브쿼리로 부모의 ID와 자식의 PARENT_ID가 같을 경우 COUNT를 세기로했다. SELECT A.ID,( SELECT COUNT(*) FROM ECOLI_DATA B WHERE A.ID = B.PARENT_ID) AS CHILD_COUNTFROM ECOLI_DATA A; 2024. 11. 14.