学号 成绩
199801001 85
199801002 76
199801003 98
199801004 54
199801005 39
199801006 61用一句sql语句查询出以下结果(是一句sql语句)及格否 人员数
及格 4
不及格 2
199801001 85
199801002 76
199801003 98
199801004 54
199801005 39
199801006 61用一句sql语句查询出以下结果(是一句sql语句)及格否 人员数
及格 4
不及格 2
union all
select '不及格' as 及格否,count(1) as 人员数 from tb where 成绩<60这样算不算一句sql?
( 学号 bigint,
成绩 int)
insert #tb1
select 199801001,85 union all
select 199801002,76 union all
select 199801003,98 union all
select 199801004,54 union all
select 199801005,39 union all
select 199801006,61 select case when 成绩<60 then '不及格' else '及格' end as 及格否,count(*) as 人员数
from #tb1
group by case when 成绩<60 then '不及格' else '及格' end 及格否 人员数
------ -----------
不及格 2
及格 4(2 行受影响)
( 学号 bigint,
成绩 int)
insert tb2
select 199801001,85 union all
select 199801002,76 union all
select 199801003,98 union all
select 199801004,54 union all
select 199801005,39 union all
select 199801006,61
go
select 及格否,
人员数=COUNT(*)
from (
select 成绩,case when 成绩<60 then N'不及格' else N'及格' end as 及格否
from tb2) k
group by 及格否
/*
及格否 人员数
---- -----------
不及格 2
及格 4*/
-- Author :SQL77(只为思齐老)
-- Date :2010-03-10 19:12:28
-- Version:
-- Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
-- Aug 6 2000 00:57:48
-- Copyright (c) 1988-2000 Microsoft Corporation
-- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:#TB
if object_id('tempdb.dbo.#TB') is not null drop table #TB
go
create table #TB([学号] int,[成绩] int)
insert #TB
select 199801001,85 union all
select 199801002,76 union all
select 199801003,98 union all
select 199801004,54 union all
select 199801005,39 union all
select 199801006,61
--------------开始查询--------------------------select CASE WHEN 成绩>=60 THEN '及格' ELSE '不及格' END,COUNT(1) from #TBGROUP BY CASE WHEN 成绩>=60 THEN '及格' ELSE '不及格' END
----------------结果----------------------------
/* (所影响的行数为 6 行)
------ -----------
不及格 2
及格 4(所影响的行数为 2 行)
*/
-- Author :fredrickhu(小F,向高手学习)
-- Date :2010-03-10 19:22:09
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([学号] int,[成绩] int)
insert [tb]
select 199801001,85 union all
select 199801002,76 union all
select 199801003,98 union all
select 199801004,54 union all
select 199801005,39 union all
select 199801006,61
--------------开始查询--------------------------
select
及格否,count(1) as 人员数
from
(
select 成绩,case when 成绩<60 then '不及格' else '及格' end as 及格否 from tb)t
group by
及格否----------------结果----------------------------
/* 及格否 人员数
------ -----------
不及格 2
及格 4(2 行受影响)
*/