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 回答