注册 登录
编程论坛 SQL Server论坛

[求助]查询统计问题

xuejianming7 发布于 2007-09-12 13:43, 984 次点击
表a
性别 成绩
男 90
女 50
男 50
男 85
男 78
女 80
女 90

想得到

性别 及格 不及格
男 3 1
女 2 1

的结果
的具体语句

[此贴子已经被作者于2007-9-12 14:04:34编辑过]

10 回复
#2
心中有剑2007-09-12 14:03


select d.性别, b.及格, c.不及格
from (select distinct 性别 from a) d,
(select 性别, count(1) as 及格 from a where 成绩 >= 60 group by 性别) b,
(select 性别, count(1) as 不及格 from a where 成绩 < 60 group by 性别) c
where d.性别 = b.性别
and d.性别 = c.性别

看看这个吧!我也不晓得了!

[此贴子已经被作者于2007-9-12 14:24:39编辑过]

#3
xuejianming72007-09-12 14:17
谢谢
#4
purana2007-09-12 14:22
select 性别,sum(yes) as 及格,sum(no) as 不及格
from
(
select 性别,yes=case when 成绩>=60 then 1 else 0 end,
no=case when 成绩<60 then 1 else 0 end
from 表1
) as temp
group by 性别
#5
西风独自凉2007-09-12 14:27
select a.sex,b.及格,c.不及格 from
(select sex from t_test group by sex ) as a ,
(select sex ,count(1)as 及格 from t_test where result>=60 group by sex ) as b,
(select sex,count(1) as 不及格 from t_test where result<60 group by sex) as c
where a.sex=b.sex
and a.sex=c.sex
#6
西风独自凉2007-09-12 14:28
暈,看樣子我的速度慢了。。。
#7
purana2007-09-12 14:31

这年头,讲的就是速度.
#8
西风独自凉2007-09-12 14:33
我和心中有剑 的思路一樣。。。。purana的方法較好。。
#9
西风独自凉2007-09-12 14:34
回复:(purana)[em02]这年头,讲的就是速度.

汗。。。看樣下次得快點了哦。。。

#10
xuejianming72007-09-12 14:36
谢谢各位
#11
心中有剑2007-09-12 18:47
其实感觉应该用 left join的
一班应该用标准sql 这样 数据库 和程序移植性更好点!不过 case when这样用,我第一次见的!
1