내 최근 프로젝트에는 (적어도 나에게는) 까다로운 논리가 있어서 이를 해결하기 위해 HAVING
를 사용하려고 노력했지만 모든 연극에서 잘못된 결과가 나왔습니다. p>
사용자를 사용자 그룹에 할당하는 연결 테이블과 각 그룹에 몇 명의 사용자가 있는지 기록하는 또 다른 테이블이 있으므로 계속해서 셀 필요가 없습니다. (두 번째 테이블은 사용자 등록이 완료되면 업데이트됩니다.)
제가 겪고 있는 문제는 두 번째 테이블의 숫자를 업데이트하는 기능에 있습니다.
연결된 테이블은 다음과 같으며 내 문제를 설명하는 샘플 데이터는 다음과 같습니다.
으아아아사용자는 여러 그룹에 속할 수 있습니다. 실제로 그룹이 되려면 사용자는 그 아래의 모든 그룹에 속해야 합니다. 이는 각 그룹에 특정 권한이 할당되기 때문입니다. 이는 현재 애플리케이션을 대대적으로 다시 작성하지 않고는 변경할 수 없습니다.
내가 원하는 것은 각 사용자에 대해 가장 높은 그룹만 계산하는 것이므로 위의 예제 데이터에서 사용자 1은 그룹 5에만 계산되고 그룹 1은 비어 있는 것처럼 보입니다.
현재는 모든 항목이 집계되는데, 즉 그룹 4에 3명이 있으면 그 3명의 사용자도 그룹 3, 2, 1에도 집계되므로 내 숫자는 상대적으로 의미가 없습니다.
지금까지 다음과 같은 몇 가지 변형을 시도했습니다.
으아아아이것은 나에게도 같은 번호를 제공합니다. 그런 다음 시도해 보았습니다.
으아아아하지만 지금은 다른 그룹에 속해 있지 않은 사용자에게만 질문을 하는 것으로 알고 있습니다.
제가 올바른 길을 가고 있는 것 같은 느낌이 들지만, 어디에, 어떤 조건이 있어야 하는지 모르겠습니다. 유사한 흐름에 대한 몇 가지 예제 쿼리를 보았지만 모든 별칭은 혼란을 가중시킬 뿐입니다.
누군가 나에게 올바른 방향을 알려줄 수 있나요?
집계를 사용하여 각 사용자가 계산할 수 있는 최대
를 얻을 수 있습니다. 으아악group_id
和COUNT()
窗口函数来对每个返回的最大group_id
> 사용자 수:이 쿼리는 구성원이 없는 모든
group_id
을 필터링합니다.모든
으아악group_id
的结果,请使用表groups
的LEFT
에 대한 결과를 원하는 경우 테이블groups
의LEFT
를 사용하여 위 쿼리에 연결하세요.간단한 데모를 확인하세요.