0

次のクエリを使用して、ゲームでヒーローが勝った割合を調べます。

SELECT Hero, (COUNT(*) * g.games) AS p
FROM gamestatistics
JOIN (
SELECT 100/COUNT(*) AS games
FROM gamestatistics
) AS g
WHERE PointEarned>0
GROUP BY Hero
ORDER BY p DESC

しかし、これにより、すべてのゲームのパーセントが得られます。そして知りたい

percentage(for Hero)=(Won games by this player)/(Played games by this hero)

それ以外の

パーセンテージ(ヒーロー)=(このプレイヤーがゲームに勝った)/(すべてのゲーム)
ありがとう。

4

3 に答える 3

4
SELECT  hero, AVG(pointEarned > 0) p
FROM    gamestatistics
GROUP BY
        hero
ORDER BY
        p DESC
于 2012-11-03T21:31:53.500 に答える
2

これを試して

select
   gc.Hero,
   sum(case when gc.PointEarned > 0 then 1 else 0 end) / count(*) as p
from gamestatistics as gc
group by by gc.Hero
order by p desc
于 2012-11-03T21:29:03.683 に答える
1

グループを適切に実行できないと考えているためcount(HERO)、代わりに使用します。count(*)

  SELECT Hero, (COUNT(HERO) * g.games) AS p
  FROM gamestatistics
  JOIN (
        SELECT 100/COUNT(*) AS games
        FROM gamestatistics
  ) AS g
  WHERE PointEarned>0
  GROUP BY Hero
  ORDER BY p DESC;

sum of PointsEarned編集:あなたはカウントで割りたいと思っていたと思います。その場合、クエリは次のようにほとんど変更されません。

SELECT Hero, (SUM(case when PointEarned <1 then 0 else 1 end)*100/count(HERO)) AS p
FROM gamestatistics
GROUP BY Hero
ORDER BY p DESC;
于 2012-11-03T21:29:13.617 に答える