2

私はこのテーブルを持っています:

UNIQUE_ID | WINNER_ID | FINALIST_ID
________1 | ________1 | __________2
________2 | ________1 | __________3
________3 | ________3 | __________1
________4 | ________1 | __________2

そして、すべてのプレーヤー (勝者とファイナリスト) のリストと、1 位または 2 位になった回数の COUNT が必要です。

この場合、次のようになります。

PLAYER_ID | WINNER_TIMES | FINALIST_TIMES
________1 | ___________3 | _____________1
________2 | ___________0 | _____________2
________3 | ___________1 | _____________1

同様の質問がすでにここ ( LINK ) にありましたが、答えがわかりませんでした。

4

2 に答える 2

3
select  coalesce(winner_id, finalist_id) as PLAYER_ID
,       count(winner_id) as WINNER_TIMES
,       count(finalist_id) as FINALIST_TIMES
from    (
        select  winner_id
        ,       null as finalist_id
        from    YourTable
        union all
        select  null
        ,       finalist_id
        from    YourTable
        ) as SubQueryAlias
group by
        coalesce(winner_id, finalist_id)

SQL Fiddle での実例。

于 2012-06-17T18:17:18.317 に答える
0

これを試して ::

 Select 
    user_id as user, 
    winner_temp.count(1) as winning_count
    finalist_temp.count(1) as runner_up_count
    from
    user_table 
    left join 
    (Select winner_id, count(1) from table group by winner_id) as winner_temp on (user_table.user_id = winner_temp.winner_id)
    left join 
    (Select finalist_id, count(1) from table group by finalist_id) as finalist_temp on 
    (user_table.user_id = finalist_temp.finalist_id)
于 2012-06-17T18:31:15.847 に答える