导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

SQL 查询问题,请求各位大虾指教!谢过了!

yueying124 2007-12-11 10:36:12
学习成绩表(假设姓名是主键): 姓名 成绩
张三 85
李四 79
王五 92
陈六 87
成绩分为ABCD四个等级,A代表90-100,B代表80-89,C代表70-79,D代表0-69
1)查询出每个学生的成绩等级
2)查询出每个成绩等级的学生人数
请求哪位大虾给予指教,谢谢了!
...全文
46 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxxloveu 2007-12-12
哈哈,好句子,楼上的
回复
wxxloveu 2007-12-12
creaate table happy
(good char(50)
I know it )
回复
wxxloveu 2007-12-12
select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb

select 成绩 , 人数 = count(*) from
(
select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb
) t
group by 成绩
回复
JL99000 2007-12-12
if object_id('t_chengji') is not null
drop table t_chengji
create table t_chengji(name_ch varchar(20),chengji_i int)
insert into t_chengji values ('张三',95)
insert into t_chengji values ('李四',86)
insert into t_chengji values ('王五',79)
insert into t_chengji values ('陈六',60)
insert into t_chengji values ('你自己',99)
select * from t_chengji
--分级
select name_ch,chengji_i,
(case when chengji_i>90 and chengji_i<=100 then 'A'
when chengji_i>80 and chengji_i<=90 then 'B'
when chengji_i>70 and chengji_i<=80 then 'C'
when chengji_i<=70 then 'D' end ) as 级别
from t_chengji

--查询每个级别的人数
select b.级别,count(b.级别) as 人数 from
(select name_ch,chengji_i,
(case when chengji_i>90 and chengji_i<=100 then 'A'
when chengji_i>80 and chengji_i<=90 then 'B'
when chengji_i>70 and chengji_i<=80 then 'C'
when chengji_i<=70 then 'D' end ) as 级别 from t_chengji) b
group by b.级别
回复
rings2000 2007-12-12
好,不错的分类统计SQL语句呀.
回复
yueying124 2007-12-11
谢谢,太感激了!
回复
dawugui 2007-12-11
create table tb(姓名 varchar(10),成绩 int)
insert into tb values('张三', 85 )
insert into tb values('李四', 79 )
insert into tb values('王五', 92 )
insert into tb values('陈六', 87 )
go

select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb
/*
姓名 成绩
---------- ----
张三 B
李四 C
王五 A
陈六 B
*/

select 成绩 , 人数 = count(*) from
(
select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb
) t
group by 成绩
/*
成绩 人数
---- -----------
A 1
B 2
C 1
*/

drop table tb
回复
dawugui 2007-12-11
select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb

select 成绩 , 人数 = count(*) from
(
select 姓名 , 成绩 = case when 成绩 >= 90 and 成绩 <= 100 then 'A'
when 成绩 >= 80 and 成绩 <= 89 then 'B'
when 成绩 >= 70 and 成绩 <= 79 then 'C'
when 成绩 >= 0 and 成绩 <= 69 then 'D'
end
from tb
) t
group by 成绩
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告