读书人

[再次提问]文章统计:如何样最近一周和

发布时间: 2012-02-06 15:52:44 作者: rapoo

[再次提问]文章统计:怎么样最近一周和所有文章数
一个文章系统,原来是统计每个管理员发文章的总数
我用的是下面的SQL

SELECT top 7 count(articleid) as Counts,Editor
FROM Admin INNER JOIN Article ON Admin.UserName = Article.Editor
where Article.Passed=True
group by Editor
order by count(articleid) desc

显示效果:

用 户 排 行

名次 用户名 文章总数
1   bobo 20
2   xixi 10

现在要把名次的地方换成该用户最近一周的发文章数,效果如下:

 用户名 最近一周 文章总数
bobo 4 20
xixi 6 10

用下面的SQL可以实现查询最近一周每个用户的发文章数

SELECT top 7 count(articleid) as Counts,Editor
FROM Admin INNER JOIN Article ON Admin.UserName = Article.Editor
where Article.Passed=True and DateDiff( 'd ',UpdateTime,#2007-3-21#) <7
group by Editor
order by count(articleid) desc

可是怎么用一条语句实现?
-------------------------------
斑竹们给的办法
SELECT
top 7 count(articleid) as Counts,
Editor ,
(select count(*) from Article where Editor=b.Editor and Passed=True)
FROM Admin as a
INNER JOIN Article as b ON a.UserName = b.Editor
where b.Passed=True
and DateDiff( 'd ',UpdateTime,#2007-3-21#) <7
group by Editor
order by count(articleid) desc
-----------------------------------
上面的语句有个小问题,就是如果一个用户总共发过10篇文章,可最近一周没有发过文章,查询的结果中就没有了这个用户
这个怎么解决,

我想的是,有了下面这个排行

名次 用户名 文章总数
1   bobo 20
2   xixi 10

在把该排行中存在的用户名的最近一周的发文章数查询出来




[解决办法]
select * from (
select UserName,nz((select count(*) from Article where a.[UserName]=Editor),0) as allcounts ,
nz((select count(*) from Article where a.[UserName]=Editor and datediff( 'd ',UpdateTime,date()) <7
),0) as weekcounts from Admin a)   order by allcounts

读书人网 >Access

热点推荐