如何计算体育总奖章数

时间:2013-09-20 07:43:44

标签: sql

我正在学校体育项目......我有一张桌子: - 结果(状态,点)

对于奖牌,我有以下标准: -

Gold  - 7 Point
Silver- 5 Points
Bronze- 4 Points

我想计算每个州获得的金牌,银牌和铜牌总数。为此,我使用了以下查询:

select STATE,sum(Point) as MEDAL from [Sheet2$] Group by STATE order by sum(Point) desc

但它只计算总分数。我想要金牌,银牌和铜牌的总数。所以请帮帮我

3 个答案:

答案 0 :(得分:3)

您可以尝试做一些条件逻辑 - 我假设您没有其他列,并且数据尚未以任何方式聚合,但是,可能类似于:

SELECT      STATE,
            SUM(Point) AS MEDAL,
            SUM(CASE WHEN Point = 7 THEN 1 ELSE 0 END) AS GoldCount,
            SUM(CASE WHEN Point = 5 THEN 1 ELSE 0 END) AS SilverCount,
            SUM(CASE WHEN Point = 4 THEN 1 ELSE 0 END) AS BronzeCount

FROM        [Sheet2$]

GROUP BY    STATE 

ORDER BY    SUM(Point) DESC

答案 1 :(得分:0)

如果我理解正确,你会从表中的点确定奖牌,然后你可以将结果分组来计算奖牌:

select
  STATE, Medal, count(*) as [Count]
from
  (select
    STATE,
    case
      when Point >= 7 then 'Gold'
      when Point >= 5 then 'Silver'
      when Point >= 4 then 'Bronze'
      else null
    end as Medal
  from
    [Sheet2$]
  ) x
group by
  STATE, Medal
order by
  STATE

答案 2 :(得分:0)

这是其他策略的替代方案。假设你的表看起来像这样:

+-------+--------+
| state | points |
+-------+--------+
| IL    |      7 |
| ON    |      3 |
| ON    |      7 |
...
| TX    |      7 |
+-------+--------+

然后这样的事情会获得奖牌数:

SELECT
  state,
  count(*) AS medal
FROM your_table
GROUP BY state, points
ORDER BY state, points desc