SQL 쿼리에서 멈춤

안녕하세요 여러분, SQL Makeshifter(Jugaad)로 이 시리즈를 시작하겠습니다. 그래서 오늘 저는 SQL 쿼리에 갇혔습니다. 내가 한 문제 진술과 해결책을 이해합시다.

문제 설명



I have a table where I have id (Primary Key), Date Entered, Name of person, Person Id, Score, Score Type

There can be multiple entries of same Person having same Score Type. We need single details of each person with each score type having maximum Date Entered.



샘플 테이블을 만들어 봅시다

Table Name: Student
| id | Date Entered | Name of Person | Person Id | Score | Score Type |
-----------------------------------------------------------------------
| 1 | 2022-08-27 | Mark | 101 | 6 | AA |
| 2 | 2022-07-08 | Alex | 102 | 3 | AA |
| 3 | 2022-08-29 | Mark | 101 | 9 | AB |
| 4 | 2022-09-01 | Mark | 101 | 2 | AA |
| 5 | 2022-02-12 | Alex | 102 | 5 | AB |
| 6 | 2022-09-09 | Alex | 102 | 9 | AB |
----------------------------------------


Expected Output



| id | Date Entered | Name of Person | Person Id | Score | Score Type |
-----------------------------------------------------------------------
| 4 | 2022-09-01 | Mark | 101 | 2 | AA |
| 3 | 2022-08-29 | Mark | 101 | 9 | AB |
| 2 | 2022-07-08 | Alex | 102 | 3 | AA |
| 6 | 2022-09-09 | Alex | 102 | 9 | AB |
----------------------------------------


이 출력을 얻으려는 첫 번째 시도



우리는 group by 절을 사용하여 having를 사용하려고 생각했고 이 쿼리를 만들었습니다.

SELECT * FROM student s GROUP BY Person Id, Score Type HAVING MAX(Date Entered);


We got wrong output using this query. We are not getting result having latest Date Entered.



이 출력을 얻으려는 두 번째 시도



Google에서 시간을 보낸 후 모든 사람이 HAVING 절의 조건을 사용하는 것을 보았으므로 지금 시도했습니다.

SELECT * FROM student s GROUP BY Person Id, Score Type HAVING Date Entered = MAX(Date Entered);


Again this didn't work



성공적인 결과로 세 번째 시도



2차 시도에서 실패한 후 직접 시도해보고 머릿속으로 매핑을 해보고 이번에는 서브쿼리 개념을 시도해봤다.

SELECT * FROM (SELECT * FROM student s GROUP BY Person Id, Score Type, Date Entered ORDER BY Date Entered desc) latest_student GROUP BY Person Id, Score Type;


Here I got my expected output



이것이 제가 오늘 SQL로 시도한 것입니다. 이제 동일한 예상 결과를 갖는 쿼리를 작성하는 다른 가능한 방법을 말할 차례입니다.

의견에 대한 귀하의 견해를 알려주십시오.

좋은 웹페이지 즐겨찾기