查询成绩分数段数量
表如下:
编号 数学 语文
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