728x90

알고리즘 27

[프로그래머스] 대장균의 크기에 따라 분류하기 2

문제 : 대장균 개체의 크기를 내름차순으로 정렬했을 때 상위 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류합니다. 대장균 개체의 ID(ID) 와 분류된 이름(COLONY_NAME)을 출력하는 SQL 문을 작성해주세요. 이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요 . 단, 총 데이터의 수는 4의 배수이며 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다. 풀이 : NTILE 를 사용하여 데이터 크기를 4등분하면 되는 문제였다. 처음에 NTILE 생각이 안나서 단순 CASE문만 활용했더니 틀렸었다. ** 참고 이런 종류의 문제는 '전체 데이터셋을 기준으로 순..

알고리즘/SQL 2025.10.29

[프로그래머스] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

문제 : USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다. 풀이 : CONCAT을 통해 문자열을 연결하여 출력하는 문제이다. 또한 주의해야 할 점은 WHERE 절은 한 행씩 보면서 조건을 검사하므로, 아직 “전체를 다 모으기 전”이라 MAX() 같은 걸 쓸 수 없다따라서 서브쿼리를 활용하여 가장 큰 조회수를..

알고리즘/SQL 2025.10.28

[프로그래머스] 연도 별 평균 미세먼지 농도 조회하기

문제 : AIR_POLLUTION 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요. 이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10, PM2.5로 해 주시고, 값은 소수 셋째 자리에서 반올림해주세요. 결과는 연도를 기준으로 오름차순 정렬해주세요. 풀이 :- "셋째 자리에서 반올림"이라는 요구사항은, 소수점 두 번째 자리까지 표시하라는 의미이다."셋째 자리까지 반올림" (혹은 "소수점 셋째 자리까지 표시")ROUND(..., 3) -> 12.3456... -> 12.346"셋째 자리에서 반올림" (셋째 자리 숫자를 보고 둘째 자리를 결정)ROUND(..., 2) -> 12.3456... -> 12.35- HAVI..

알고리즘/SQL 2025.10.27

[프로그래머스] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

문제 : FISH_INFO에서 평균 길이가 33cm 이상인 물고기들을 종류별로 분류하여 잡은 수, 최대 길이, 물고기의 종류를 출력하는 SQL문을 작성해주세요. 결과는 물고기 종류에 대해 오름차순으로 정렬해주시고, 10cm이하의 물고기들은 10cm로 취급하여 평균 길이를 구해주세요 풀이: 그룹화와 COALESCE 통해 10cm 이하인 물고기들을 10으로 치환해야 되는 문제였다. -- 평균 길이가 33cm 이상인 물고기들 분류SELECT COUNT(ID) AS FISH_COUNT, MAX(LENGTH) AS MAX_LENGTH,FISH_TYPEFROM FISH_INFO GROUP BY FISH_TYPEHAVING AVG(COALESCE(LENGTH, 10)) >= 33ORDER BY FISH_TYPE ..

알고리즘/SQL 2025.10.27

[프로그래머스] 연도별 대장균 크기의 편차 구하기

문제 : 분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요. 풀이 : 셀프 조인 및 그룹화가 필요했던 문제이다 .SELECT YEAR(A.DIFFERENTIATION_DATE) AS YEAR,B.MAX_SIZE-A.SIZE_OF_COLONY AS YEAR_DEV,A.IDFROM ECOLI_DATA AS AJOIN ( SELECT YEAR(DIFFERENTIATION_DATE) AS YEA..

알고리즘/SQL 2025.10.27

[프로그래머스] 조건별로 분류하여 주문상태 출력하기

문제 : FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요. 풀이 : 2022년 5월 1일 기준으로 이전 날짜면 출고완료, 이후 날짜면 출고대기, 값이 NULL이면 출고미정 으로 출고여부 컬럼을 추가해서 보여줘야 하는 문제이다. * SQL에서 조건문은 주로 CASE WHEN … THEN … ELSE … END 형태로 사용한다! (If-else 와 같은 역할)* END는 꼭 써야함.SELECT ORDER_ID, PRODUCT_ID, DAT..

알고리즘/SQL 2025.09.01

[프로그래머스] 노선별 평균 역 사이 거리 조회하기

문제 : SUBWAY_DISTANCE 테이블에서 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회하는 SQL문을 작성해주세요. 총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻합니다. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 해주시고, 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 한 뒤 단위(km)를 함께 출력해주세요. 결과는 총 누계 거리를 기준으로 내림차순 정렬해주세요. 풀이 : 이 문제에서 주의할 점은 반올림 부분이다. "N번째 자리에서 반올림"이라는 말은 "N-1번째 자리까지 보여달라"임을 유념하자. 나는 ROUND를 활용해서 해당 문제를 풀었다. S..

알고리즘/SQL 2025.08.18

[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기

문제: USED_GOODS_BOARD와USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. 풀이 : - 중고 거래가 완료된 상태를 먼저 필터링 (Where 절로 행 필터링)- 총 금액이 70만원 이상이어야 하므로, SUM 함수를 쓰기 위해 GROUP BY & HAVING 사용하여 중고 거래의 총금액이 70만 원 이상인 USER_ID 필터링SELECT B.USER_ID, B.NICKNAME, SUM(U.PRICE) AS TOTAL_SALESFROM USED_GOODS_BOARD AS U JOIN USED_GOODS_USER AS B ON U.WRIT..

알고리즘/SQL 2025.08.11

[프로그래머스] 성분으로 구분한 아이스크림 총 주문량

문제 : 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요. 풀이 : 각 아이스크림 성분 타입별로 그룹화하는 것이 관건이므로, GROUP BY & HAVING 을 이용하면 되는 문제였다. SELECT B.INGREDIENT_TYPE, SUM(A.TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALF AS AJOIN ICECREAM_INFO AS B ON A.FLAVOR = B.FLAVORGROUP BY B.INGREDIENT_TYPEORDER BY TOTAL_ORDER ASC; 문제 출처 : https://school.p..

알고리즘/SQL 2025.08.11

[프로그래머스] 조건에 맞는 개발자 찾기

문제: DEVELOPERS 테이블에서 Python이나 C# 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요. 풀이 (1) : DEVELOPERS 테이블에서 Python이나 C# 스킬을 가진 개발자의 정보하기 위해 SKILL_CODE 테이블에 있는 CODE값과 DEVELOPERS 테이블에 있는 CODE 값과 비트연산을 수행한다. 이에 해당하는 SKILL_CODE를 가진 값들을 기준으로 SELECT문 수행하도록 하였다. SELECT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAMEFROM DEVELOPERS AS DWHERE SKILL_CODE IN( SELECT SKILL_CODE..

알고리즘/SQL 2025.08.10
728x90