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로 시도한 것입니다. 이제 동일한 예상 결과를 갖는 쿼리를 작성하는 다른 가능한 방법을 말할 차례입니다.
의견에 대한 귀하의 견해를 알려주십시오.
Reference
이 문제에 관하여(SQL 쿼리에서 멈춤), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lakshyatyagi24/stuck-in-sql-query-454j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)