选择具有最多访问权限的类别名称

时间:2016-05-18 00:09:22

标签: sql select count

我有这张表:

Profile:
ID   NAME
---------
1    COMP
2    SEGM
3    PERS

Category:
ID   NAME
---------
1    NEWS
2    IMGS
3    PEPL

Content:
ID  NAME  IDCAT
---------------
1   HI    1
2   CAT   2
3   DOG   2
4   MAN   3
5   TUT   2

Access:
ID IDCONT IDPRF
--------------
1     3     1
2     5     2
3     3     2
4     2     2
5     1     1
6     4     2
7     1     3

我需要一个帮助来构建一个SQL(我正在使用SQL Server),以便在访问时知道每个配置文件访问哪种类别的内容。我需要这样的东西:

IDPRF   NAMECAT
---------------
  1      NEWS
  2      IMGS
  3      NEWS

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这是一个聚合查询,您需要最高计数。您可以使用SQL Server中的row_number()来获取此信息:

select idprf, c.name
from (select a.idprf, c.name, count(*) as cnt,
             row_number() over (partition by a.idprof order by count(*) desc) as seqnum
      from access a join
           content co
           on a.idcont = co.id join
           category c
           on co.idcat = c.id
      group by a.idprf, cname
     ) ac
where seqnum = 1