Sql 如何计算体育奖牌总数
我正在从事学校体育项目。在这里,我有一张桌子:- 结果(状态、点) 对于奖牌,我有以下标准:-Sql 如何计算体育奖牌总数,sql,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 但是它只计算积分总数。我还需要金牌、银牌和铜牌的总数。所
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
但是它只计算积分总数。我还需要金牌、银牌和铜牌的总数。所以请帮助我你可以尝试做一些条件逻辑-我在这里假设你没有其他列,并且数据还没有以任何方式聚合,但是,可能类似于:
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
如果我理解正确,您可以根据表中的分数确定奖牌,然后您可以将结果分组以计算奖牌:
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
这里有一个替代其他策略的方法。假设您的表如下所示:
+-------+--------+
| 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
金、银、铜的价值储存在哪一列?请指定您的数据库引擎,如SQL server、Oracle等。您能告诉我们您的表结构吗?您应该提供数据库/表结构,以及您是否只存储点?例如,要想知道金牌的数量,你必须选择count(*),其中point=7?试着按州分组,奖牌类型,使用count而不是Sum。我想这是一个THEN 1而不是WHEN 1。如果我在窗口应用程序中使用this query来选择存储在excel中的数据,它会显示错误:-错误[42000ׁ][Microsoft][ODBC Excel驱动程序]查询表达式“求和(如果点=7,则为1,否则为0结束)”中出现语法错误(缺少运算符)…请在此帮助我注意:“以上”这里不起作用,因为相同分数的答案是随机排列的。它现在适用于meIt现在适用于meThis根据奖牌数量显示州名,例如考试:-德里奖牌:1个计数:-1,德里梅达:1个计数:1我希望它是:-州,然后是他们的总金牌、总铜牌和总银牌