1

私は次のことを達成しようとしています -

私はサッカーチーム用に 2 つのテーブルを持っています (私が作成したものではありません。これは私が使用する必要があるものです)。

won_matches-
columns: team_id | match_name | scored_goals

lost_matches-
columns: team_id | match_name | scored_goals

teams_names-
team_id | team_name 

(試合名や得点数は気にしません)

私がする必要があるのは、各チームが win_matches テーブルに持っているエントリの数と、lost_matches テーブルに持っているエントリの数をカウントし、lost_matches の数を win_matches の数で割って、負け/勝った試合の比率を取得することです。次に、チーム名とともに各チーム (またはすべてのチーム) についてこの比率を提示する必要があります。

私はこのようなことを試しましたが、必要に応じて機能しません:

SELECT b. team_name, (SELECT COUNT(team_id)
FROM won_matches [***optional; WHERE team_id=37***]) / COUNT(a.team_id)*100 AS lost_won_ratio
FROM lost_matches a 
join teams_names b on a.team_id=b.team_id
[***optional; WHERE a.team_id=37***]

あなたの提案に感謝します。

4

3 に答える 3

0

このようなものがうまくいくはずです。

SELECT tn.teamID, sum(won_matches.teamID ) as WON, sum(lost_matches.teamID ) as LOST,(sum(won_matches.teamID )/sum(lost_matches.teamID )) as WLratio
From teams_names AS tn LEFT JOIN won_matches ON tn.teamID = won_matches.teamID LEFT JOIN lost_matches ON tn.teamID = lost_matches.teamID 
于 2013-07-30T18:05:55.090 に答える
0

次のようなことを試してください:

select team_id, Won, count(*) as Matches, sum(scored_goals) as Goals
from 
(select 1 as Won, Team_id, scored_goals from won_matches
union all
select 0 as Won, team_id, scored_goals from lost_matches) x
group by team_id, Won
于 2013-07-30T17:33:44.567 に答える
0

私はそのようなものがうまくいくと思います:

select team_id,
       count(won), count(lost),
       count(won)/(count(won)+count(lost)) as 'Win ratio' from
(
select True as won, NULL as lost, won_matches.* from won_matches
union all
select NULL as won, True as lost, lost_matches.* from lost_matches
) as S group by team_id

http://sqlfiddle.com/#!2/6dbaf/2 (編集: 結合を使用してチーム名を表示)

これが DB にどのように格納されているかがわからないため、引き分けの可能性を考慮していないことに注意してください。

編集count(won)/(count(won)+count(lost))カウント比式としても使用したことに注意してください。そのほうが論理的に思えます。あなたが固執するなら、count(lost)/count(win)あなたは0ケースで割るに対処しなければならないでしょう...

于 2013-07-30T17:55:22.087 に答える