create table tb(ID int, TITLE varchar(20), UNIT varchar(10))
insert tb select 1 ,'关于这次...', '法制科'
union all select 2 ,'关于什么的...' ,'法制科'
union all select 3 ,'什么的通知...' ,'计通科'
union all select 3 ,'什么的通知...' ,'计通科'
union all select 3 ,'什么的通知...' ,'xx科'
union all select 3 ,'什么的通知...' ,'xx科'
union all select 3 ,'什么的通知...' ,'xx科'
union all select 3 ,'什么的通知...' ,'yy科'
首先要算出信息数,再确定等级(从这个表中选出一个数再在这个表中排序)
SELECT a.UNIT 单位名称,a.CNT 数量,b.bbbb名次
FROM (SELECT COUNT(ID) CNT,UNIT FROM tb GROUP BY UNIT) a
INNER JOIN
(SELECT CNT,
--主要在这一句,根据数量得到等级.要注意 ">="
(SELECT COUNT(*) FROM (SELECT DISTINCT COUNT(ID) CNT FROM tb GROUP BY UNIT) x
WHERECNT>=a.CNT) bbbb
FROM (SELECT DISTINCT COUNT(ID) CNT FROM tb GROUP BY UNIT) a --select 获得各单位发表的信息数
) b
ON a.CNT=b.CNT
ORDER BY 名次
drop table tb