728x90

SQL 10

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

문제 : 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

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

문제: 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

[프로그래머스] 업그레이드 된 아이템 구하기

문제: 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬주세요. 풀이:서브쿼리를 잘 활용해야 하는 문제였다. 희귀도가 RARE 인 ITEM_ID들의 PARENT_ITEM_ID를 갖고온 뒤, 해당 PARENT_ITEM_ID들을 기반으로 ITEM_INFO에서 ITEM_ID를 다시 가져와야 한다.SELECT ITEM_ID, ITEM_NAME, RARITYFROM ITEM_INFO WHERE ITEM_ID IN ( SELECT ITEM_ID FROM ITEM_TREE WHERE ..

알고리즘/SQL 2025.08.07

[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기

문제: ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요. 풀이: WHERE, GROUP BY, HAVING, ORDER BY는 이 순서로만 사용 가능하다, 또한, HAVING은 집계 함수 조건에 사용할 수 있다. WHERE: GROUP BY 전에 동작하는 조건 (행 필터링)HAVING: GROUP BY 후에 동작하는 조건 (그룹 필터링) ** 유의하기 ;은 SQL문의 마지막에만 써야 함!!SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP ..

알고리즘/SQL 2025.08.07

[프로그래머스] 가장 큰 물고기 10마리 구하기

문제 : FISH_INFO 테이블에서 가장 큰 물고기 10마리의 ID와 길이를 출력하는 SQL 문을 작성해주세요. 결과는 길이를 기준으로 내림차순 정렬하고, 길이가 같다면 물고기의 ID에 대해 오름차순 정렬해주세요. 단, 가장 큰 물고기 10마리 중 길이가 10cm 이하인 경우는 없습니다. 풀이: 주의할 점은 WHERE절 사용 없이 (*WHERE 절은 특정 조건에 맞는 데이터만 필터링할 때 사용) ORDER BY를 활용해 데이터를 정렬한 뒤 상위 10개를 뽑아오면 된다.SELECT ID, LENGTH FROM FISH_INFOORDER BY LENGTH DESC,ID ASC LIMIT 10; 문제 출처 : https://school.programmers.co.kr/learn/courses/30/lesso..

알고리즘/SQL 2025.08.07

[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기

문제 : MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요. 풀이) 생일이 3월인 여성 필터링 기준을 잡는 것이 핵심인 문제였다. MONTH(DATE_OF_BIRTH) = 3 이런 식으로 분류 하는 게 핵심이다. SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTHFROM MEMBER_PROFILEWHERE -- 1. 생일이 3월인 여성 DATE_FORMAT(DATE_OF_BIRTH, '%..

알고리즘/SQL 2025.07.29

[프로그래머스] 12세 이하인 여자 환자 목록 출력하기

문제 : PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. 풀이 : IFNULL 을 활용해서 TLNO가 NULL이면 'NONE'으로, 아니면 원래 값으로 보여주는 것이 핵심 SELECT PT_NAME, PT_NO, GEND_CD, AGE, -- 1. TLNO가 NULL이면 'NONE'으로, 아니면 원래 값으로 보여줌 IFNULL(TLNO, 'NONE') AS TLNOFROM PATIENTWHERE -- 2. 12세 이하이고..

알고리즘/SQL 2025.07.29

[프로그래머스] 과일로 만든 아이스크림 고르기

문제 : 상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요. 풀이)FLAVOR 기준으로 JOIN만 해주면 되는 문제였다. SELECT A.FLAVORFROM FIRST_HALF AS AJOIN ICECREAM_INFO AS B ON A.FLAVOR = B.FLAVORWHERE -- 1. 총주문량이 3,000보다 높고 (숫자로 비교) A.TOTAL_ORDER > 3000 AND -- 2. 주 성분이 과일 B.INGREDIENT_TYPE = 'fruit_based'ORDER BY -- 3. 총주문량을 기준으로 내림차순 정렬 A.TOTAL_ORDER DESC; 문..

알고리즘/SQL 2025.07.29
728x90