programing

날짜별 MySQL 순서 결과 및 사용자 ID별 그룹화

css3 2023. 6. 14. 22:09

날짜별 MySQL 순서 결과 및 사용자 ID별 그룹화

다음과 같은 테이블이 있습니다.

user_id 데이트 시간 활동
2 2022-01-10 12:00:00 로그아웃
1 2022-01-09 12:00:00 로그 인.
3 2022-01-08 12:00:00 로그 인.
3 2022-01-07 12:00:00 등록하세요
2 2022-01-06 12:00:00 로그 인.
1 2022-01-05 12:00:00 등록하세요

다음 기준으로 정렬된 테이블을 쿼리하는 경우datetime DESC저는 위와 같은 결과를 얻겠습니다.

아래와 같이 user_id로 그룹화된 결과를 얻을 수 있도록 쿼리를 확장하려면 어떻게 해야 합니까?

user_id 데이트 시간 활동
2 2022-01-10 12:00:00 로그아웃
2 2022-01-06 12:00:00 로그 인.
1 2022-01-09 12:00:00 로그 인.
1 2022-01-05 12:00:00 등록하세요
3 2022-01-08 12:00:00 로그 인.
3 2022-01-07 12:00:00 등록하세요

이 논리는 레코드가 다음 기준으로 정렬된다는 것입니다.datetime DESC처음에 레코드에 대한 user_id를 만나면 user_id에 속한 모든 레코드를 함께 집계하고 유지합니다.datetime DESCuser_id 그룹 내에서 정렬합니다.

사용하다MAX()의 창 기능ORDER BY절:

SELECT *
FROM tablename
ORDER BY MAX(datetime) OVER (PARTITION BY user_id) DESC,
         user_id, -- just in case there are duplicate datetimes, remove this if the column datetime is unique
         datetime DESC; 

데모를 참조하십시오.

언급URL : https://stackoverflow.com/questions/73637905/mysql-order-results-by-datetime-and-grouped-by-user-id