해당 글은 프로그래머스의 'SQL 고득점 Kit'을 풀고 작성한 글입니다.
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
집계함수 > 가격이 제일 비싼 식품의 정보 출력하기 (Lv.2)
https://school.programmers.co.kr/learn/courses/30/lessons/131115
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE >= (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
집계함수 > 최댓값 구하기 (Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/59415
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT DATETIME AS '시간'
FROM ANIMAL_INS
WHERE DATETIME >= (SELECT MAX(DATETIME) FROM ANIMAL_INS)
집계함수 > 최값 구하기 (Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/59038
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT DATETIME AS '시간'
FROM ANIMAL_INS
WHERE DATETIME <= (SELECT MIN(DATETIME) FROM ANIMAL_INS)
집계함수 > 중복 제거하기 (Lv.2)
https://school.programmers.co.kr/learn/courses/30/lessons/59408
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
집계함수 > 조건에 맞는 아이템들의 가격의 총합 구하기 (Lv.2)
https://school.programmers.co.kr/learn/courses/30/lessons/273709
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) ITEM_INFO 테이블에서 희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 SQL문을 작성해 주세요. 이때 컬럼명은 'TOTAL_PRICE'로 지정해 주세요.
SELECT SUM(PRICE) AS TOTAL_PRICE
FROM ITEM_INFO
WHERE RARITY IN ('LEGEND')
집계함수 > 물고기 종류 별 대어 찾기 (Lv.3)
https://school.programmers.co.kr/learn/courses/30/lessons/293261
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) 물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요. 결과는 물고기의 ID에 대해 오름차순 정렬해주세요. 단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.
SELECT ID, N.FISH_NAME AS FISH_NAME, LENGTH
FROM FISH_INFO AS F JOIN FISH_NAME_INFO AS N ON F.FISH_TYPE = N.FISH_TYPE
WHERE (F.FISH_TYPE, LENGTH) IN ( # 특정 타입에서 가장 긴 길이가 되어야.
SELECT FISH_TYPE, MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE)
ORDER BY ID ASC
집계함수 > 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/298515
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm' 를 붙여 출력하는 SQL 문을 작성해주세요.
SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO
SELECT한 값 뒤에 문자열을 붙이려면 MySQL의 CONCAT() 함수를 사용
집계함수 > 연도별 대장균 크기의 편차 구하기 (Lv.2)
https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제) 분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요.
-- 풀이 접근이 어려웠음.
SELECT
YEAR(E.DIFFERENTIATION_DATE) AS YEAR, # 년도만 뽑아낼 때는 YEAR() 사용하기
(M.MAX_SIZE - E.SIZE_OF_COLONY) AS YEAR_DEV,
E.ID
FROM ECOLI_DATA E JOIN ( # 각 년도에서 최대 크기의 COLONY 알아내기
SELECT
MAX(SIZE_OF_COLONY) AS MAX_SIZE,
YEAR(DIFFERENTIATION_DATE) AS YEAR
FROM ECOLI_DATA
GROUP BY YEAR
) M ON YEAR(DIFFERENTIATION_DATE) = M.YEAR
ORDER BY YEAR ASC, YEAR_DEV ASC
년도만 뽑아낼 때는 YEAR() 사용하기! DATE_FORMAT() 쓰면 데이터 타입이 달라짐.
YEAT()는 정수를 반환하지만, DATE_FORMAT은 문자열을 반환함.
그래서 연도 구하는 문제에서 DATE_FORMAT(DATE, '&Y') 사용하면 문제 채점 기준과 맞지 않을 수 있다고 함!
'공부 > DB' 카테고리의 다른 글
[DB/MYSQL] SQL 고득점 Kit - SELECT문(Lv.3~5) (0) | 2025.02.21 |
---|---|
[DB] Concurrency Control Techniques (Locking, MVCC..) (0) | 2024.12.14 |
[DB] Transactions & Serializability (1) | 2024.12.14 |
[DB] Index Structures for files (Primary, Clustering, Secondary) (0) | 2024.12.14 |
[DB] Collision Management in Database Hashing Techniques (1) | 2024.12.14 |