나는 통계를 데이터베이스 파일로 출력 할 수있는 농구 경기를하고 있으므로 게임에서 구현되지 않은 통계를 계산할 수 있습니다. 지금까지 내가 원하는 통계를 계산하는 데 아무런 문제가 없었지만 이제는 게임 통계에서 시즌 동안 플레이어가 만든 더블 더블 및 / 또는 트리플 더블의 수를 세는 문제가 발생했습니다.
더블 더블과 트리플 더블의 정의는 다음과 같습니다.
더블 더블 :
더블 더블 (double-double)은 플레이어가 게임에서 5 가지 통계 범주 (포인트, 리바운드, 어시스트, 훔치기 및 막힌 샷) 중 두 개의 총 두 자리 숫자를 누적하는 성능으로 정의됩니다.
트리플 더블 :
트리플 더블은 플레이어가 게임에서 5 가지 통계 범주 (포인트, 리바운드, 어시스트, 훔치기 및 막힌 샷) 중 3 개의 총 두 자리 숫자를 누적하는 성능으로 정의됩니다.
쿼드 러플-더블 (설명을 위해 추가됨)
쿼드 러플 더블은 플레이어가 게임에서 5 가지 통계 범주 (포인트, 리바운드, 어시스트, 훔치기 및 막힌 샷) 중 4 개의 통계 범주에서 총 두 자리 숫자를 누적하는 성능으로 정의됩니다.
"PlayerGameStats"테이블은 플레이어가 플레이하는 각 게임에 대한 통계를 저장하며 다음과 같습니다.
CREATE TABLE PlayerGameStats AS SELECT * FROM ( VALUES
( 1, 1, 1, 'Nuggets', 'Cavaliers', 6, 8, 2, 2, 0 ),
( 2, 1, 2, 'Nuggets', 'Clippers', 15, 7, 0, 1, 3 ),
( 3, 1, 6, 'Nuggets', 'Trailblazers', 11, 11, 1, 2, 1 ),
( 4, 1, 10, 'Nuggets', 'Mavericks', 8, 10, 2, 2, 12 ),
( 5, 1, 11, 'Nuggets', 'Knicks', 23, 12, 1, 0, 0 ),
( 6, 1, 12, 'Nuggets', 'Jazz', 8, 8, 11, 1, 0 ),
( 7, 1, 13, 'Nuggets', 'Suns', 7, 11, 2, 2, 1 ),
( 8, 1, 14, 'Nuggets', 'Kings', 10, 15, 0, 3, 1 ),
( 9, 1, 15, 'Nuggets', 'Kings', 9, 7, 5, 0, 4 ),
(10, 1, 17, 'Nuggets', 'Thunder', 13, 10, 10, 1, 0 )
) AS t(id,player_id,seasonday,team,opponent,points,rebounds,assists,steals,blocks);
달성하려는 출력은 다음과 같습니다.
| player_id | team | doubleDoubles | tripleDoubles |
|-----------|---------|---------------|---------------|
| 1 | Nuggets | 4 | 1 |
내가 지금까지 찾은 유일한 해결책은 너무 끔찍해서 나를 놀리 게 만드는 것입니다 ...; o) ... 그것은 다음과 같습니다 :
SELECT
player_id,
team,
SUM(CASE WHEN(points >= 10 AND rebounds >= 10) OR
(points >= 10 AND assists >= 10) OR
(points >= 10 AND steals >= 10)
THEN 1
ELSE 0
END) AS doubleDoubles
FROM PlayerGameStats
GROUP BY player_id
... 그리고 지금 당신은 아마 이것을 읽은 후 펑킹하거나 웃고있을 것입니다. 나는 모든 이중 이중 조합을 얻는 데 필요한 모든 것을 작성하지 않았으며 트리플 더블에 대한 사례 진술은 더 어리석기 때문에 생략했습니다.
더 좋은 방법이 있습니까? 내가 가지고있는 테이블 구조 또는 새로운 테이블 구조로 (테이블을 변환하는 스크립트를 작성할 수 있습니다).
MySQL 5.5 또는 PostgreSQL 9.2를 사용할 수 있습니다.
여기에 예제 데이터와 위에 게시 한 끔찍한 솔루션이있는 SqlFiddle에 대한 링크가 있습니다 : http://sqlfiddle.com/#!2/af6101/3
내가 아는 한 게임에서 발생하지 않기 때문에 쿼드 러플 (위 참조)에 관심이 없지만 계정에 다시 쓰지 않고 쿼리를 쉽게 확장 할 수 있다면 더할 나위가 있습니다. 쿼드 러플 용.