을 계산하는 승리고의 손실을 각 사용자에 가입하지 않고도 테이블을 사용하여 외부 조인,그것은 단지 선택 승 및 손실에는 별도로 하고 유니온 사이에 있는 모든 것을,하지만 추가적인 정보를 주는 경우 행를 나타내는 승리한 사용자 또는 손실이다.
그런 다음,그것은 쉽게 계산하는 모든 승 및 손실에 대한 각 사용자에 따라 다릅니다.까다로운 부분이었을 통합하는 옵션을 지정하고 싶은 사용자 프로필을 비교.았다는 변수를 설정되는 값의 percentage
의 사용자가 지정된 user_id
, 할 수 있는 변경에서 일정한 변수.
여기에 내 계획안(비교하는 사용자 id=6):
SELECT
player_id AS id_user,
wins,
losses,
wins + losses AS total,
wins / (wins + losses) AS percent
FROM (
SELECT
player_id,
SUM(is_a_win) wins,
SUM(is_a_loss) losses,
CASE
WHEN player_id = 6
THEN @the_user_score := SUM(is_a_win) / (SUM(is_a_win) + SUM(is_a_loss))
ELSE NULL
END
FROM (
SELECT id_user_winner AS player_id, 1 AS is_a_win, 0 AS is_a_loss FROM user_versus
UNION ALL SELECT id_user_loser, 0, 1 FROM user_versus
) games
GROUP BY player_id
) data
WHERE
ABS(wins / (wins + losses) - @the_user_score) <= 0.1
;
출력:
ID_USER WINS LOSSES TOTAL PERCENT 6 8 2 10 0.8 9 6 1 7 0.8571
수은 물론 제거하는 사용자의 프로필을 기본 비교를 위해 추가하여 player_id != 6
(또,최종 솔루션,일부 변수 이름)조건을 가장 바깥 WHERE
절입니다.
예 SQLFiddle: 매칭 프로파일 예제
를 제출할 수 있습니다면 이것은 당신이 무엇을 찾고 있었고,그렇지 않은 경우,어떤 출력겠습니까?