各位求一统计条数的SQL语句,谢谢
create table t1(
姓名 varchar(10),
考试名称ID int,
试卷名称 varchar(10),
题型 varchar(10),
分数 decimal(5, 2))
insert t1 select 'aaa ', 1, '语文 ', '选择题 ', 20
union all select 'aaa ', 1, '语文 ', '填空题 ', 30
union all select 'aaa ', 1, '语文 ', '单选题 ', 40
union all select 'bbb ', 1, '数学 ', '选择题 ', 10
union all select 'bbb ', 1, '数学 ', '填空题 ', 30
union all select 'bbb ', 1, '数学 ', '单选题 ', 20
union all select 'ccc ', 2, '语文 ', '选择题 ', 20
union all select 'ccc ', 2, '语文 ', '填空题 ', 30
union all select 'ccc ', 2, '语文 ', '单选题 ', 30
union all select 'ddd ', 2, '数学 ', '选择题 ', 10
union all select 'ddd ', 2, '数学 ', '填空题 ', 30
union all select 'ddd ', 2, '数学 ', '单选题 ', 20
create table t2(
id int,
tname varchar(10))
insert t2 select 1, '期中 '
union all select 2, '期末 '
通过 select group语句,得到如下结果:
select t1.姓名, t1.考试名称ID, t2.tname as 考试名称, t1.试卷名称, sum(t1.分数) 成绩
from t1, t2
where t1.考试名称ID = t2.id
group by t1.考试名称ID, t2.tname, t1.姓名, t1.试卷名称
drop table t1, t2
/*
姓名 考试名称ID 考试名称 试卷名称 成绩
---------- ----------- ---------- ---------- -----------------------------
aaa 1 期中 语文 90.00
bbb 1 期中 数学 60.00
ccc 2 期末 语文 80.00
ddd 2 期末 数学 60.00
(所影响的行数为 4 行)
*/
现在要实现的是,如何得到 成绩大于80的条数?
select Count(*)
[解决办法]
select count(*) 成绩大于80的条数 from
(
select t1.姓名, t1.考试名称ID, t2.tname as 考试名称, t1.试卷名称, sum(t1.分数) 成绩
from t1, t2
where t1.考试名称ID = t2.id
group by t1.考试名称ID, t2.tname, t1.姓名, t1.试卷名称
) t
where 成绩 > 80