반응형
SQL Group By and Order - 테이블의 가장 최근 항목에 대한 세부 정보 검색
각 bot_id에 대한 최신 Entry를 반환하는 SQL Query를 만들고 싶습니다.
현재 요청은 다음과 같이 보이지만 항상 첫 번째 Entry를 반환합니다. DESC & ASC는 아무런 차이가 없습니다.
SELECT bot_id, id
FROM t_request_history
GROUP BY bot_id
ORDER BY request_time DESC
표는 다음과 같습니다.
t_request_history
이드 | bot_id | 부탁한다 | 대답 | 오류 | request_time |
---|---|---|---|---|---|
1 | usr_e74ae42b-080c-48e0-9e6c | a | a | 0 | 2021-09-16 23:37:10 |
2 | usr_e74ae42b-080c-48e0-9e6c | a | a | 1 | 2021-09-16 23:37:35 |
3 | usr_e74ae42b-080c-48e0-9e6c | a | a | 1 | 2021-09-16 23:43:20 |
4 | 삭제 | 1 | 1 | 1 | 2021-09-16 23:44:21 |
5 | 삭제 | 1 | 1 | 0 | 2021-09-16 23:44:32 |
6 | 삭제 | 1 | 1 | 0 | 2021-09-16 23:44:41 |
원하는 결과
bot_id | 이드 |
---|---|
삭제 | 6 |
usr_e74ae42b-080c-48e0-9e6c | 3 |
실제 결과
bot_id | 이드 |
---|---|
삭제 | 4 |
usr_e74ae42b-080c-48e0-9e6c | 1 |
Is there any way to make this query work?
당신의 것처럼 보입니다.id
값은 시간이 지남에 따라 증가합니다.즉, 테이블의 새 항목이 더 높은 것 같습니다.id
이전 항목보다 많은 값을 입력합니다.이게 사실이라면
SELECT bot_id, MAX(id) id
FROM t_request_history
GROUP BY bot_id
당신이 원하는 것을 얻을 수 있습니다.
만약에id
값은 시간에 따라 증가하지 않습니다. 각 bot_id에 대한 최신 시간을 찾기 위해 하위 쿼리를 사용해야 합니다.
SELECT bot_id, MAX(request_time) request_time
FROM t_request_history
GROUP BY bot_id
그런 다음 하위 쿼리를 다음과 같이 테이블에 결합합니다.
SELECT a.bot_id, a.id
FROM t_request_history a
JOIN (
SELECT bot_id, MAX(request_time) request_time
FROM t_request_history
GROUP BY bot_id
) b ON a.bot_id = b.bot_id
AND a.request_time = b.request_time
조인 조건은 테이블에서 최신 시간이 있는 행만 선택합니다.
창/분석 기능을 사용하여 이 작업을 수행할 수 있습니다.
SELECT distinct
bot_id, MAX(request_time) OVER(PARTITION BY bot_id)
FROM t_request_history
;
@ MariaDB WindowFunction Max 사용 설명서에 대한 자세한 내용도 확인할 수 있습니다.
언급URL : https://stackoverflow.com/questions/69215714/sql-group-by-and-order-retrieve-detail-for-most-recent-entries-in-table
반응형
'programing' 카테고리의 다른 글
오라클.NetManagedDataAccess 오류: 'OracleInternal' 유형을 로드할 수 없습니다.어셈블리의 Common.ConfigBaseClass' (0) | 2023.06.09 |
---|---|
문자 배열/문자열은 바이너리 파일에 어떻게 저장됩니까? (0) | 2023.06.09 |
Android 전화기의 전화 번호를 프로그래밍 방식으로 가져옵니다. (0) | 2023.06.09 |
Yum이 키보드 인터럽트 오류와 함께 충돌했습니다. (0) | 2023.06.09 |
c 정수의 get nth 바이트 (0) | 2023.06.09 |