*********小小的查询问题,分不够另开帖加,大侠们帮忙*********

seesea125 2007-05-14 09:48:33
id 部门 员工 员工下面的客户 每天访问网站数 日期
1 A部门 H员工 W客户 8 2007-5-7
2 A部门 H员工 Y客户 11 2007-5-7
3 A部门 I员工 Z客户 4 2007-5-7
4 B部门 J员工 O客户 10 2007-5-8
5 B部门 J员工 P客户 3 2007-5-9
5 B部门 J员工 Q客户 3 2007-5-10

上面是数据库的字段,一个部门有多个员工,一个员工下面又有多个客户,每个客户在每一天都有访问网站的次数的记录

我想按每周为自然段,统计每个部门的所有员工,统计每个员工他们下面的客户每周共访问多少次,其中访问次数大于10次的多少人,站总数的百分之几

按每周为自然段,每周运行一次SQL,把结果追加到结果表中

结果是这样的
部门 员工 客户共访问数 客户数 大于10的客户 百分比
A部门 H员工 19 2 1 1/2
A部门 I员工 4 1 0 0/1
B部门 J员工 16 3 1 1/3

注意是按周为单位统计

大侠帮忙,谢谢拉,分不够再加
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
seesea125 2007-05-18
  • 打赏
  • 举报
回复
谢谢两位拉
dawugui 2007-05-14
  • 打赏
  • 举报
回复
if object_id('pubs..tb') is not null
drop table tb
go

create table tb(id int,部门 varchar(10),员工 varchar(10),员工下面的客户 varchar(10),每天访问网站数 int,日期 datetime)
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(1,'A部门','H员工','W客户',8 ,'2007-5-7')
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(2,'A部门','H员工','Y客户',11,'2007-5-7')
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(3,'A部门','I员工','Z客户',4 ,'2007-5-7' )
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(4,'B部门','J员工','O客户',10,'2007-5-8')
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(5,'B部门','J员工','P客户',3 ,'2007-5-9' )
insert into tb(id,部门,员工,员工下面的客户,每天访问网站数,日期) values(5,'B部门','J员工','Q客户',3 ,'2007-5-10')
go

select m.* , isnull(n.大于10的客户, 0) 大于10的客户 , cast(isnull(大于10的客户 , '0') as varchar) + '/' + cast(m.客户数 as varchar) 百分比 from
(select datepart(week, 日期) 周,员工,sum(每天访问网站数) 客户共访问数,count(*) 客户数 from tb group by datepart(week, 日期),员工) m
left join
(select datepart(week, 日期) 周,员工,count(*) 大于10的客户 from tb where 每天访问网站数>=10 group by datepart(week, 日期),员工) n
on m.周 = n.周 and m.员工 = n.员工

drop table tb

/*
周 员工 客户共访问数 客户数 大于10的客户 百分比
----------- ---------- ----------- ----------- ----------- ------
19 H员工 19 2 1 1/2
19 I员工 4 1 0 0/1
19 J员工 16 3 1 1/3

(所影响的行数为 3 行)

*/
OracleRoob 2007-05-14
  • 打赏
  • 举报
回复
create table #t(id int,部门 varchar(100),员工 varchar(10),员工下面的客户 varchar(10),每天访问网站数 int,日期 datetime)

insert into #t select 1,'A部门','H员工','W客户',8,'2007-5-7'
insert into #t select 2,'A部门','H员工','Y客户',11,'2007-5-7'
insert into #t select 3,'A部门','I员工','Z客户',4,'2007-5-7'
insert into #t select 4,'B部门','J员工','O客户',10,'2007-5-8'
insert into #t select 5,'B部门','J员工','P客户',3,'2007-5-9'
insert into #t select 6,'B部门','J员工','Q客户',3,'2007-5-10'

select
部门,
员工,
sum(每天访问网站数) as 客户共访问数,
count(*) AS 客户数,
sum(case when 每天访问网站数>=10 then 1 else 0 end ) as 大于10的客户,
cast(sum(case when 每天访问网站数>=10 then 1 else 0 end ) as varchar(10)) + '/' + cast(count(*) as varchar(10)) as 百分比
from #t
group by 部门,员工

drop table #t
dawugui 2007-05-14
  • 打赏
  • 举报
回复
下面这个例你看看先.

如有一表如下,FIELDA为DATETIME型,FIELDB为int型
FIELDA FIELDB
2006-10-1 2
2006-10-2 3
2006-10-3 4
2006-10-4 2
2006-10-8 2
2006-10-10 5
............
2006-12-3 3
2006-12-30 4

要对此一系列数据进行按"周(Week)"分组显示SUM(FIELDB),SQL语句该怎样写呢?这个周(Week)是指以开始时间每隔7天为一周
(注:数据并不一定连续,像上述示例中2006-10-5中的数据就是没有的.)

谢谢.

select datepart(week, FIELDA) , sum(FIELDB) from tb group by datepart(week, FIELDA)
dawugui 2007-05-14
  • 打赏
  • 举报
回复
是统计一个具体的周还是统计所有的周?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧