SQL 고득점 Kit - 2

김동현·2023년 12월 19일

SQL 고득점 Kit

목록 보기
2/56

1. GROUP BY - 즐겨찾기가 가장 많은 식당 정보 출력하기

문제

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131123

1차 풀이

## 1차 풀이
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
GROUP BY 1
ORDER BY 4 DESC

리뷰: 음식 종류에서 맨 처음 나온 종류로 그룹화가 진행되어 즐겨찾기가 많은 데이터가 사라지게 된다.

2차 풀이

## 2차 풀이
with food as (
    select  FOOD_TYPE, REST_ID, REST_NAME, max(FAVORITES) as FAVORITES
    from REST_INFO
    group by 1
)
select *
from food
order by 4 desc

리뷰: 원하는 출력이 나왔는데 정답은 아니였다. 결국 혼자 힘으로 풀지 못하였다. 이유를 모르겠어서 검색을 했다. 나중에 관련 내용을 공부 후 작성을 하겠다.

2. SUM, MAX, MIN -최댓값 구하기

문제

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE

https://school.programmers.co.kr/learn/courses/30/lessons/59415

풀이

  • DATETIME은 연산이 가능하다 따라서 집계함수를 사용하여 제일 큰 숫자 = 최근 날짜로 쿼리 작성
SELECT max(DATETIME)
from ANIMAL_INS
profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글