读书人

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

发布时间: 2013-07-16 22:38:05 作者: rapoo

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

编号 数学 语文
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

读书人网 >SQL Server

热点推荐