日期:2014-05-18  浏览次数:20704 次

统计每个科目的报考人数,以及合格人数,每个科目有多少期上课?
统计每个科目的报考人数,以及合格人数?
表table
有科目type,字段sfhg显示是否合格(是表示合格),上课期数qs,
qs输入为1,满人之后就2,然后3,以此类推

要求统计每个科目的报考人数,以及合格人数,每个科目共有多少期?


------解决方案--------------------
select type,sum(case when sfhg = '是' then 1 else 0 end),COUNT(distinct qs)
from table
group by type


------解决方案--------------------
SQL code

--> 测试数据:[test]
if object_id('[test]') is not null drop table [test]
create table [test]([type] varchar(2),[sfhg] varchar(2),[qs] int)
insert [test]
select 't1','是',1 union all
select 't1','否',1 union all
select 't1','是',1 union all
select 't2','否',2 union all
select 't2','是',2 union all
select 't3','否',3 union all
select 't3','是',3 union all
select 't3','否',3 union all
select 't1','是',4 union all
select 't1','否',4

select [type],COUNT(1) as 总人数,
COUNT(distinct [qs]) as 期数,
SUM(case when [sfhg]='是' then 1 else 0 end)as 合格人数
 from test group by [type]
/*
 type    总人数    期数    合格人数
t1    5    2    3
t2    2    1    1
t3    3    1    1
 */