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

统计分析 sql 语句
有两个表 

客户表:
客户ID  联系人  所属职员
1         LA      ZA
2         LB      ZA
3         LC      ZB
4         LD      ZC

订单表:
订单号  客户ID  订单日期
1       1          20130101
2       1          20130102
3       3          20130101

我想统计下 每个职员有多少个客户下过订单
ZA    1
ZB    1

sql语句该怎么写

------解决方案--------------------

create table 客户表
(客户ID int, 联系人 varchar(10), 所属职员 varchar(10))

insert into 客户表
 select 1, 'LA', 'ZA' union all
 select 2, 'LB', 'ZA' union all
 select 3, 'LC', 'ZB' union all
 select 4, 'LD', 'ZC'

create table 订单表
(订单号 int, 客户ID int, 订单日期 varchar(10))

insert into 订单表
 select 1, 1, '20130101' union all
 select 2, 1, '20130102' union all
 select 3, 3, '20130101'


select b.所属职员 '职员',count(distinct a.客户ID) '客户数'
 from 订单表 a
 inner join 客户表 b on a.客户ID=b.客户ID
 group by b.所属职员
 
/*
职员         客户数
---------- -----------
ZA         1
ZB         1

(2 row(s) affected)
*/

------解决方案--------------------
SELECT A.所属职员, cnt=COUNT(distinct B.客户ID)
FROM 客户表 a