日期:2014-05-17  浏览次数:20435 次

关于数据统计的问题group by
图书编号 状态 管理员 管理组长 管理主任
0001 完好 G1 L1 D1
0002 轻微破损 G1 L1 D1
0003 严重破损 G2 L2 D2
0004 完好 G3 L3 D2
0005 完好 G1 L1 D1
0006 完好 G4 L2 D2
0007 轻微破损 G5 L4 D1


要求按管理主任统计

管理主任 管理组长 管理员 图书数量 完好的数量

这个查询统计要如何写啊?还请各位指点一下,谢谢

------解决方案--------------------
不知道你那个图书数量是总数还是对应主任的数量,两种方式你自己挑
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-05-22 10:40:41
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
-- Jun 17 2011 00:54:03 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([图书编号] varchar(4),[状态] varchar(8),[管理员] varchar(2),[管理组长] varchar(2),[管理主任] varchar(2))
insert [huang]
select '0001','完好','G1','L1','D1' union all
select '0002','轻微破损','G1','L1','D1' union all
select '0003','严重破损','G2','L2','D2' union all
select '0004','完好','G3','L3','D2' union all
select '0005','完好','G1','L1','D1' union all
select '0006','完好','G4','L2','D2' union all
select '0007','轻微破损','G5','L4','D1'
--------------开始查询--------------------------

select 管理主任, 管理组长, 管理员,COUNT(1) 图书数量,COUNT(CASE WHEN 状态='完好' THEN  1 ELSE 0 END ) 完好的数量 
from [huang]
GROUP BY 管理主任, 管理组长, 管理员
----------------结果----------------------------
/* 
管理主任 管理组长 管理员  图书数量        完好的数量
---- ---- ---- ----------- -----------
D1   L1   G1   3           3
D1   L4   G5   1           1
D2   L2   G2   1           1
D2   L2   G4   1           1
D2   L3   G3   1           1
*/