코드잇 피자 가게에서는 고객들이 남긴 리뷰(별점과 댓글)를 관리하기 위해 다음과 같은, 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를 적용하면 문제의 답을 구할 수 있겠죠?