怎么将某个字段的记录按值的不同进行分类统计

caikeji2003 2003-10-15 04:45:49
一个学生成绩表的“分数”字段,有70、65、70、65、90……等分数,怎么统计所有出现的分数的出现次数,如:
65 70 90 ……
2 5 3 ……
怎样实现???
注,我不能去统计65、70、90等所有出现过的分数。
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongyan80 2003-10-15
  • 打赏
  • 举报
回复
大力写的不就可以了吗?写的还不简单吗?
caikeji2003 2003-10-15
  • 打赏
  • 举报
回复
各位大哥大姐,假如我的数据较多,比如是全年级的某科成绩的总表,分数的分布很广(可能从0到150都有),我不可能将其从0到150都写一遍。有没有比较好的方法啊,多谢!!!
yujohny 2003-10-15
  • 打赏
  • 举报
回复
select sum(case 分数 when 65 then 1 else 0 end) 65,
sum(case 分数 when 70 then 1 else 0 end) 70,
sum(case 分数 when 90 then 1 else 0 end) 90
from 成绩表 group by 分数
txlicenhe 2003-10-15
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select '
select @sql = @sql + ' sum(case 分数 when '''+分数+''' then 1 end) ['+分数+']'
from (select distinct 分数 from 成绩表) as a
select @sql = @sql+' from 成绩表 '
exec(@sql)

CrazyFor 2003-10-15
  • 打赏
  • 举报
回复
select
case
when 分数<50 then [50以下]
when 分数>50 and 分数<60 then [50-60分]
....
end
,count(*) from 成绩表
group by
case
when 分数<50 then [50以下]
when 分数>50 and 分数<60 then [50-60分]
....
end
应该是分数段比较实用.
sdhdy 2003-10-15
  • 打赏
  • 举报
回复
select (select count(分数) from tablename where 分数=65) [65],(select count(分数) from tablename where 分数=70) [70],(select count(分数) from tablename where 分数=90) [90]
yujohny 2003-10-15
  • 打赏
  • 举报
回复
select sum(case 分数 when 65 then 1 else 0 end) as 65,
sum(case 分数 when 70 then 1 else 0 end) as 70,
sum(case 分数 when 90 then 1 else 0 end) as 90
from 表 group by 分数
pengdali 2003-10-15
  • 打赏
  • 举报
回复
select 分数,count(*) 人数 from 成绩表 group by 分数
yujohny 2003-10-15
  • 打赏
  • 举报
回复
select 分数,count(*) from 成绩表 group by 分数

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧