카테고리 없음

[데이터베이스] 데이터 정렬 과제

양상추상츄 2021. 10. 16. 10:00

코드잇 피자 가게에서는 고객들이 남긴 리뷰(별점과 댓글)를 관리하기 위해 다음과 같은, review라는 테이블을 갖고 있습니다.

idstarcommentregistration_date

1 2 '치즈가 좀 부족해요' 2020-01-02
2 5 '페페로니의 향을 빠르게 맛볼 수 있었어요’ 2020-03-24
3 3 ‘맛은 있는데, 배달이 너무 느렸어요’ 2020-04-21
4 2 ‘너무 비싸요, 세일은 안 하나요?’ 2019-11-23
5 3 '사진이랑 조금 다르지만 먹을만 하네요’ 2019-09-14
6 5 ‘최고의 맛, 어느새 단골이 되었네요^^’ 2020-05-02
7 2 ‘왜 피클을 안 넣어주셨죠?’ 2019-10-05

이 review 테이블에서, 좋은 리뷰보다는 안 좋은 리뷰를 위주로 분석해서 현재 서비스에서 개선해야할 부분들을 찾아보고 싶은데요. 

row들을

(1) star(별점) 컬럼을 기준으로 일단 오름차순 정렬하고,

(2) 같은 별점인 경우에는 registration_date(등록일자) 컬럼을 기준으로 내림차순 정렬하려고 합니다.

즉, 안 좋은 리뷰부터, 최근 순으로 볼 겁니다.

그리고 정렬된 결과 중에서도

(3) 5번째 row까지만 일단 추려서 보고 싶습니다.

어떤 SQL문을 써야할까요? 직접 작성해보세요.

 

SELECT * FROM review ORDER BY star ASC, 
    registration_date DESC
    LIMIT 5;

 

출력결과

1 2 치즈가 좀 부족해요 2020-01-02
4 2 너무 비싸요, 세일은 안 하나요? 2019-11-23
7 2 왜 피클을 안 넣어주셨죠? 2019-10-05
3 3 맛은 있는데, 배달이 너무 느렸어요 2020-04-21
5 3 사진이랑 조금 다르지만 먹을만 하네 2019-09-14

 

과제 해설

정답 : SELECT * FROM review ORDER BY star ASC, registration_date DESC LIMIT 5; 또는

SELECT * FROM review ORDER BY star ASC, registration_date DESC LIMIT 0, 5;

ORDER BY star ASC, registration_date DESC 라고 써주면 별점 기준으로 오름차순, 그리고 같은 별점 안에서는 등록일자 기준으로 내림차순 정렬될 겁니다.

그리고 이렇게 정렬된 row들을 대상으로 LIMIT 5 또는 LIMIT 0, 5를 적용하면 문제의 답을 구할 수 있겠죠?