SQL统计终于完成了

SQL统计终于完成了,写完之后才发现原来也不难,其实主要是baidu上有例子,百度让我们越来越懒惰了!

如何用SQL统计及格率、优秀率指标?
表格:
班级   学号   语文  数学
11     1        90    80
11     2        95    90
11     3        45    70
12     1        60    73
12     2        95    92
13     1        88    78...
如何按班级统计及格率、优秀率:
班级   人数    及格人数   优秀人数   及格率   优秀率


方法1:
Select DISTINCT        t2.班级, t2.人数, t3.及格人数, t4.优秀人数,        cast(t3.及格人数 as money) / t2.人数 AS 及格率,        cast(t4.优秀人数 as money)/ t2.人数 AS 优秀率 FROM t1 LEFT OUTER JOIN           (Select 班级, COUNT(*) AS 人数          FROM t1          GROUP BY 班级) t2 ON t1.班级 = t2.班级 LEFT OUTER JOIN           (Select 班级, COUNT(*) AS 及格人数          FROM t1          Where 成绩 >= 60          GROUP BY 班级) t3 ON t1.班级 = t3.班级 LEFT OUTER JOIN           (Select 班级, COUNT(*) AS 优秀人数          FROM t1          Where 成绩 >= 90          GROUP BY 班级) t4 ON t1.班级 = t4.班级

方法2:
Select 班级,count(*) as 人数,;sum(IIF(语文>=60,1,0)) as 语文及格人数,;sum(IIF(语文>=80,1,0)) as 语文优秀人数,;sum(IIF(语文>=60,1,0))*100/count(*) as 语文及格率,;sum(IIF(语文>=80,1,0))*100/count(*) as 语文优秀率,;sum(IIF(数学>=60,1,0)) as 数学及格人数,;sum(IIF(数学>=80,1,0)) as 数学优秀人数,;sum(IIF(数学>=60,1,0))*100/count(*) as 数学及格率,;sum(IIF(数学>=80,1,0))*100/count(*) as 数学优秀率 ;FROM 成绩表 GROUP BY 班级

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.