SQL读取赛选数据问题!有追加分!

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:26:37
一个报道表(名字:A),结果安排如下:

id______userid_______bumenid________time_______usergroup
//------会员ID-------部门ID---------时间-------用户级别
1_______1____________1______________23_________1
2_______1____________2______________23_________1
3_______2____________1______________23_________0
4_______3____________2______________22_________0
5_______4____________1______________20_________1
6_______4____________2______________20_________1
7_______1____________1______________19_________1
8_______1____________2______________18_________1
9_______2____________1______________18_________0
10______4____________2______________17_________1

数据得来说明,每个用户可能有1个到几个部门报道权限。
上面的数据,会员1,在部门1报道,还在部门2报道了。会员4,20号2个部门都报道了,17号,只在部门2报道了。
数据中,还会把会员的级别写在里面

希望得到的结果:
每个会员,在一个部门中的最新一条报道数据。(1会员1部门1最新数据)
并按照会员级别降序和时间降序排列

照上面的数据,应该结果为:

userid_______bumenid________time_______usergroup
会员ID-------部门ID---------时间--

select userid, bumenid , max(time) as maxtime from A group by userid, bumenid

--如果要加上 usergroup的显示,可试试如下

select userid, bumenid , max(time) as maxtime,
(select usergroup from A b where b.id=AA.id) as usergroup
from A AA wgroup by userid, bumenid

说明: 之所以单独select usergroup ,是不将usergroup也分组

楼上的后面有问题。。这样做是实现不了楼主要的功能

select userid,bumenid,max(time) time,(select distinct usergroup from tb where userid=b.userid) usergroup from tb b group by userid,bumenid order by usergroup desc,time desc

sql中测试通过

select userid, bumenid ,max(time) time , usergroup
from A
group by userid, bumenid , usergroup
order by usergroup desc , time desc

----------------------------------
这样OK了吧~写那么复杂干什么~

select t.userid, t.bumenid, max(t.time) time, t.usergroup
from a t
group by t.userid, t.bumenid, t.usergroup