首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

查询成绩分数段数量,该怎么处理

2013-07-16 
查询成绩分数段数量表如下:编号数学语文1503026020370304806059070要求统计出各科的成绩分布:科目60分6

查询成绩分数段数量
表如下:

编号  数学  语文
1  50  30
2  60  20
3  70  30
4  80  60
5  90  70

要求统计出各科的成绩分布:
科目  >=60分  <60分
数学  4       1
语文  2       3

这样的应该怎么写SQL语句?
查询成绩分数段数量,该怎么处理
[解决办法]


declare @t table (id int,shuxue int,yuwen int)
insert into @t
select 1,50,30 union all
select 2,60,20 union all
select 3,70,30 union all
select 4,80,60 union all
select 5,90,70 

select A='数学',jige=COUNT(1),bujige=((select COUNT(1) from @t)-COUNT(1)) from @t where shuxue>=60
union all
select A='语文',jige=COUNT(1),bujige=((select COUNT(1) from @t)-COUNT(1)) from @t where yuwen>=60

-----------------------------------------------
数学41
语文23

[解决办法]


CREATE TABLE  #Tmp_TABLE(编号 INT,数学 INT,语文 INT)

INSERT INTO #Tmp_TABLE
SELECT 1,50,30
UNION
SELECT 2,60,20
UNION
SELECT 3,70,30
UNION
SELECT 4,80,60
UNION
SELECT 5,90,70


SELECT 
      '数学' as 科目, 
      Sum(CASE WHEN 数学 >= 60 THEN 1 ELSE 0 END) AS '>=60分',
      Sum(CASE WHEN 数学 < 60 THEN 1 ELSE 0 END) AS '<60分'
FROM #Tmp_TABLE
union all
SELECT 
      '语文' as 科目, 
      Sum(CASE WHEN 语文 >= 60 THEN 1 ELSE 0 END) AS '>=60分',
      Sum(CASE WHEN 语文 < 60 THEN 1 ELSE 0 END) AS '<60分'


FROM #Tmp_TABLE 

热点排行