sql语句求高手怎么才能显示本周和上周的排名数据,代码怎么加啊
<DIVid=box><DIVclass=clear></DIV><DIVid=contenter><DIVclass=block><DIVclass=block_top...
<DIV id=box>
<DIV class=clear></DIV>
<DIV id=contenter>
<DIV class=block>
<DIV class=block_top>任务发布排行榜</DIV>
<DIV class=block_contenter>
<DIV class=grid_box>
<UL id=ax1>
<%
Sql = "select top 10 username,count(*) as jieducm_num from "&jieducm&"_zhongxin group by username order by jieducm_num desc"
Set rs = Server.CreateObject("Adodb.RecordSet")
rs.Open Sql,conn,1,1
IF not rs.Eof Then
Do While Not rs.Eof
%>
<LI><SPAN><%=rs("username")%></SPAN>次数:<%=rs("jieducm_num")%> </LI>
<%
rs.MoveNext
Loop
End IF
%>
</UL>
</DIV> 展开
<DIV class=clear></DIV>
<DIV id=contenter>
<DIV class=block>
<DIV class=block_top>任务发布排行榜</DIV>
<DIV class=block_contenter>
<DIV class=grid_box>
<UL id=ax1>
<%
Sql = "select top 10 username,count(*) as jieducm_num from "&jieducm&"_zhongxin group by username order by jieducm_num desc"
Set rs = Server.CreateObject("Adodb.RecordSet")
rs.Open Sql,conn,1,1
IF not rs.Eof Then
Do While Not rs.Eof
%>
<LI><SPAN><%=rs("username")%></SPAN>次数:<%=rs("jieducm_num")%> </LI>
<%
rs.MoveNext
Loop
End IF
%>
</UL>
</DIV> 展开
2个回答
展开全部
只会分组不过滤过条件的孩子你伤不起!
group by是一个子句,实际还有一个条件就是我们常称的滤过条件,也就是什么条件下的允许分组。如果是分组依据的,则必须使用having,也就是说having是滤过条件,很多书上告诉你having子句类似于where但必须在group by的后面,其实这些说法都是错误的,你可能记不住,你要记的是group by是分组子句,子句中还有一个分组条件,也就是所谓的having。这样你容易知道group by时是否使用having滤过条件。
另外一些书上告诉你,having与where通用,可以将having条件写到where中,其实不这根本不对,但大部分的时间两者是通用,但工作原理完全不同!引起的效率也是不同的。只能说一点,两者如果不考虑效率的问题时大部分通用,但考虑效率时两者根本不可能通用。而有些时间having根本不可能用到where条件中。
而这时就是对日期进行一次判断而已,也就是所谓的通用,你可以试一下having与where条件结果是等效的,但效率你也也可以测试一下是不等效!
其实加一个条件,将时间放在本周内即可!可以使用where 或having,都测试一下吧!
另外需要注意的是,top 10并不一定能保证10条记录!这个语句可能会造成你UI布局上有些困难!这种情况的来源就是如果说第10条件记录与第11条记录的排序条件相等时,结果有点问题的!不信的话可以做测试,所以要么你对UI设计上有沟通,要么必须限制在10条,那么,考虑这种情况后加一个第二排序条件即可解决。
group by是一个子句,实际还有一个条件就是我们常称的滤过条件,也就是什么条件下的允许分组。如果是分组依据的,则必须使用having,也就是说having是滤过条件,很多书上告诉你having子句类似于where但必须在group by的后面,其实这些说法都是错误的,你可能记不住,你要记的是group by是分组子句,子句中还有一个分组条件,也就是所谓的having。这样你容易知道group by时是否使用having滤过条件。
另外一些书上告诉你,having与where通用,可以将having条件写到where中,其实不这根本不对,但大部分的时间两者是通用,但工作原理完全不同!引起的效率也是不同的。只能说一点,两者如果不考虑效率的问题时大部分通用,但考虑效率时两者根本不可能通用。而有些时间having根本不可能用到where条件中。
而这时就是对日期进行一次判断而已,也就是所谓的通用,你可以试一下having与where条件结果是等效的,但效率你也也可以测试一下是不等效!
其实加一个条件,将时间放在本周内即可!可以使用where 或having,都测试一下吧!
另外需要注意的是,top 10并不一定能保证10条记录!这个语句可能会造成你UI布局上有些困难!这种情况的来源就是如果说第10条件记录与第11条记录的排序条件相等时,结果有点问题的!不信的话可以做测试,所以要么你对UI设计上有沟通,要么必须限制在10条,那么,考虑这种情况后加一个第二排序条件即可解决。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询