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

问一个asp的统计与查询问题
数据库类似如下:
表:jilu
字段:
id   自动编号
uname:用户名   文本
um:贴子数   整数
udate:日期(每天每个用户名就生成一条)

例如:(数据每日一条,一个用户可能有多条数据)
1       aa       10       2006-01-01
2       bb       10     2006-01-01
3       aa       10     2006-01-02
4     bb         10   2006-01-02
5     cc         300     2006-01-04
6       aa       30     2006-01-05
7       dd       30     2006-01-07


表:yonghu
字段:
id   自动编号
yname:用户名   文本
yji:用户等级
yregdate:用户注册日期

例如:(每个用户名就一条,不重名。)

1       aa       4       2006-01-01
2       bb       4       2006-01-01
3       cc       2       2006-01-01
4       dd       4     2006-01-02

表jilu里面是每个用户每天一条数据。

我要进行如下的查询,输出所有4级用户,自注册日期起之后80天内的贴子数之和不足100的

也即是说:

在yonghu表里找到yji=4的所有用户,然后统计jilu表里,从yregdate之后的80天内um的   “和” <100的。

请问这个查询语句应该如何写?
输入要求符合条件的用户(不重复)

例如:用上面我给出的演示数据

应该输出:
aa
dd
因为bb虽然是4级,但是um大于100,而cc则yji <> 4

或者怎么样效率会更高?

------解决方案--------------------
Select a.uname From jilu a inner join yonghu b on a.uname=b.yname Where b.yji=4 And datediff( 'd ',b.yregdate,a.udate) <80 group by a.uname having sum(a.um) <100