반응형
ID로 그룹화된 후 열 값을 기준으로 행을 카운트하는 방법
그룹화된 열 값을 기준으로 총 행 수를 반환하는 방법은 아래 코드에서 항목 소유권을 가진 개별 팀을 작업하고 인쇄하지만 total_member 수가 정확하지 않고 실제보다 약 10배 더 높은 경우와 같습니다.
내 코드는 다음과 같습니다.
SELECT
team.team_name,
team_rank.points,
SUM(CASE WHEN items.item_id = 1 THEN items.count END) AS item1,
SUM(CASE WHEN items.item_id = 2 THEN items.count END) AS item2,
SUM(CASE WHEN items.item_id = 3 THEN items.count END) AS item3,
SUM(CASE WHEN items.item_id = 4 THEN items.count END) AS item4,
COUNT(member.team_id) AS total_members
FROM
member
INNER JOIN
items ON member.obj_Id = items.owner_id
INNER JOIN
team ON team.team_id = member.team_id
JOIN
team_rank ON team.team_id = team_rank.team_id
GROUP BY
member.team_id
아래는 현재 결과이고, 항목 계산은 맞지만, 실제로 팀 1은 19명, 팀 2는 5명이기 때문에 여러 번 곱한 것입니다.
편집됨:
요청에 따라 fidle에 업로드된 데이터베이스 데이터의 예를 참조하십시오.https://www.db-fiddle.com/f/gwWCEa3vaPs1JTgBnwk1wM/0
내부 집계member
갖기 위해total_members
결과를 쿼리에 참여시킵니다.
SELECT
team.team_name,
team_rank.points,
SUM(CASE WHEN items.item_id = 1 THEN items.count END) AS item1,
SUM(CASE WHEN items.item_id = 2 THEN items.count END) AS item2,
SUM(CASE WHEN items.item_id = 3 THEN items.count END) AS item3,
SUM(CASE WHEN items.item_id = 4 THEN items.count END) AS item4,
c.total_members
FROM member
INNER JOIN (SELECT team_id, COUNT(team_id) total_members FROM member GROUP BY team_id) c
ON c.team_id = member.team_id
INNER JOIN items ON member.obj_Id = items.owner_id
INNER JOIN team ON team.team_id = member.team_id
INNER JOIN team_rank ON team.team_id = team_rank.team_id
GROUP BY member.team_id;
데모를 참조하십시오.
언급URL : https://stackoverflow.com/questions/73926392/how-to-count-rows-based-on-column-value-after-its-grouped-by-id
반응형
'programing' 카테고리의 다른 글
SELECT FOR XML 쿼리에서 반환된 열 이름을 선택하는 방법은 무엇입니까? (0) | 2023.06.20 |
---|---|
Firebase가 현재 사용자를 제거합니다. (0) | 2023.06.20 |
IE에서 "시스템 호출로 전달된 데이터 영역이 너무 작습니다"라는 오류가 발생하는 이유는 무엇입니까? (0) | 2023.06.20 |
Oracle -- WITH CLOUSE => 병합?( 구문 오류, ) (0) | 2023.06.20 |
앱이 디버그에서 실행 중일 때 Firebase 충돌 보고를 비활성화하는 방법은 무엇입니까? (0) | 2023.06.20 |