我有一个表liansai,字段有:name,result
数据有: 张三,胜
李四,胜
张三,负
张三,胜
张三,胜
李四,胜
李四,胜
这是一个比赛结果的记录表。现在我想把结果输出如下几项:
name,比赛场次,胜场,负场,胜率,总积分(胜一场3分,负一场1分)
张三, 4, 3, 1, 75% ,10
李四, 3, 3, 0, 100%, 9我不知道如何把统计胜场和负场的数量与总场次的数量放在一个语句中实现;
统计总场次的语句:select name,count(result) as 比赛场次 from liansai group by name
我想写的是:select name ,count(result) as 比赛场次,count(result='负') as 负场,
count(result='胜') as 胜场,........... (另,胜率和总积分如何统计?) from liansai group by name
菜鸟问题,望指点迷津
数据有: 张三,胜
李四,胜
张三,负
张三,胜
张三,胜
李四,胜
李四,胜
这是一个比赛结果的记录表。现在我想把结果输出如下几项:
name,比赛场次,胜场,负场,胜率,总积分(胜一场3分,负一场1分)
张三, 4, 3, 1, 75% ,10
李四, 3, 3, 0, 100%, 9我不知道如何把统计胜场和负场的数量与总场次的数量放在一个语句中实现;
统计总场次的语句:select name,count(result) as 比赛场次 from liansai group by name
我想写的是:select name ,count(result) as 比赛场次,count(result='负') as 负场,
count(result='胜') as 胜场,........... (另,胜率和总积分如何统计?) from liansai group by name
菜鸟问题,望指点迷津
解决方案 »
- 请问下用存储过程是不是可以注入?
- 简单问题,不解?
- ~~~~~~求查询~~~~~~
- 安装了Microsoft SQL Server 2008,能不能再安装Microsoft SQL Server 2005 Express Edition?会覆盖
- 请问怎么去日期字段的月份【 ?】
- 如何通过SQL语句将2004-6-29 10:25:00的时间截掉?
- 已知有两台电脑A,B. 分别装有SQL SERVER. 在电脑A上备份数据库mydata ,生成文件mydata.bak。 然后把此文件copy 到B电脑上, 我想用此文件
- 怎样查询不要后面的小时分钟等?
- 如何在SQL Server中建立一个链接VFP数据源的链接服务器,并对其中的表查询?
- 请问视图中怎么正确写case函数呢?
- 插入语句中用变量写怎么写
- 问一个小问题,随便散分!
name,
Count(result) As 比赛场次,
SUM(Case result When N'胜' Then 1 Else 0 End) As 胜场,
SUM(Case result When N'负' Then 1 Else 0 End) As 负场,
Rtrim(Cast(SUM(Case result When N'胜' Then 1 Else 0 End)*100.0/SUM(Case result When N'负' Then 1 Else 0 End) As Int))+'%' As 胜率,
SUM(Case result When N'胜' Then 3 Else 1 End) As 总积分
From liansai
Group By name
select name,count(1) as 比赛场次,
sum(case result when '胜' then 1 else 0 end) as 胜场,
sum(case result when '负' then 1 else 0 end) as 负场,
cast(sum(case result when '胜' then 1 else 0 end)*100.00/count(1) as varchar)+'%' as 胜率,
sum(case result when '胜' then 3 when '负' then 1 else 0 end) as 总积分
from liansai
group by name
name,
Count(result) As 比赛场次,
SUM(Case result When N'胜' Then 1 Else 0 End) As 胜场,
SUM(Case result When N'负' Then 1 Else 0 End) As 负场,
Rtrim(Cast(COUNT(Case result When N'胜' Then 1 Else 0 End)*100.0/COUNT(RESULT))+'%' As 胜率,
SUM(Case result When N'胜' Then 3 Else 1 End) As 总积分
From liansai
Group By name
(name Nvarchar(10),
result NChar(2))
Insert liansai Select N'张三',N'胜'
Union All Select N'李四',N'胜'
Union All Select N'张三',N'负'
Union All Select N'张三',N'胜'
Union All Select N'张三',N'胜'
Union All Select N'李四',N'胜'
Union All Select N'李四',N'胜'
GO
Select
name,
Count(result) As 比赛场次,
SUM(Case result When N'胜' Then 1 Else 0 End) As 胜场,
SUM(Case result When N'负' Then 1 Else 0 End) As 负场,
Rtrim(Cast(SUM(Case result When N'胜' Then 1 Else 0 End)*100.0/Count(result) As Int))+'%' As 胜率,
SUM(Case result When N'胜' Then 3 Else 1 End) As 总积分
From liansai
Group By name
GO
Drop Table liansai
--Result
/*
name 比赛场次 胜场 负场 胜率 总积分
李四 3 3 0 100% 9
张三 4 3 1 75% 10
*/
FROM liansai group by name
通过查询,在access中是不能用case when 语句的,只能用iif 语句。衷心感谢上述几位给我的认真解答。