table:
班级 学生 分数
甲班 A 100
甲班 B 99
甲班 C 97
甲班 D 80
甲班 E 90
乙班 F 100
乙班 G 98
乙班 H 91
乙班 I 80
乙班 J 90求个SQL能得到以下结果:
班级 总学生数 分数100学生数 分数95~99学生数 分数95以下学生数
甲班 5 1 2 2
乙班 5 1 1 3
班级 学生 分数
甲班 A 100
甲班 B 99
甲班 C 97
甲班 D 80
甲班 E 90
乙班 F 100
乙班 G 98
乙班 H 91
乙班 I 80
乙班 J 90求个SQL能得到以下结果:
班级 总学生数 分数100学生数 分数95~99学生数 分数95以下学生数
甲班 5 1 2 2
乙班 5 1 1 3
解决方案 »
- 本人装oracle 10g 遇到的各种问题,求助!!!
- vs2005连接oracle问题
- 昨天刚刚安装的oracle 10G,使用正常,今天早上突然连接不上。
- 如何将Sql server 2005的数据库导入到oracle10g中?急!!!
- ORA-00600: 内部错误代码,参数: [qks3tInit], [], [], [], [], [], [], []
- delete部分数据后怎么恢复?
- 性能瓶颈诊断,请帮忙
- 如何导出oracle表中的注释
- oracle 里保存序列的表叫什么名字?
- oracle 11g RAC 更改了remote_listener参数后EM出问题,日志:ORA-12514, TNS:listener does not cu
- Oracle11G,每天定点报错,请教高手
- 一个数据库查询语句问题,请教高人。。。
SUM(CASE
WHEN 分数 BETWEEN 95 AND 99 THEN
1
ELSE
0
END) 分数95 99学生数,
SUM(CASE
WHEN 分数 < 95 THEN
1
ELSE
0
END) 分数95以下学生数
FROM TABLE
SELECT 班级 ,总学生数 ,SUM(DECODE(分数, 100, 1, 0)),
SUM(CASE
WHEN 分数 BETWEEN 95 AND 99 THEN
1
ELSE
0
END) 分数95 99学生数,
SUM(CASE
WHEN 分数 < 95 THEN
1
ELSE
0
END) 分数95以下学生数
FROM TABLE
有小小问题啊,呵呵 总学生数 count(*) 并且要分组 group by 班级
count(CASE
WHEN 分数 BETWEEN 95 AND 99 THEN
1
ELSE
null END) 分数95- 99学生数,
count(CASE
WHEN 分数 < 95 THEN
1
ELSE
null END) 分数95以下学生数
FROM TABLE group by 班级。
谢了,茅塞顿开,之前忘了统计函数不会统计null值记录。