获取最大群体的所有价值

时间:2017-03-12 16:14:57

标签: sql ms-access ms-access-2007

我有一张学生桌和一张他们借来的书桌。我需要找一个借阅最多书籍并展示这些书籍标题的学生。

目前我有一份学生名单和每位学生借阅的书籍数量,按降序排序。我可以使用Top 1来获得借阅最多的学生。

SELECT TOP 1 Students.Name, Students.LastName, Count(Books.Title) AS BorrowedBooksCount
FROM (Meldunek INNER JOIN Students ON Meldunek.pesel = Students.pesel) 
INNER JOIN Books
ON Students.pesel = Books.pesel
GROUP BY Students.Name, Students.LastName
ORDER BY Count(Books.Title) DESC;

如何显示借阅最多书籍的学生的书名?

1 个答案:

答案 0 :(得分:0)

让那些借阅最多书籍的学生:

select top 1 m.pesel
from Meldunek as m
group by m.pesel
order by count(*) desc;

您可以在where子句中使用它进行过滤。但是你应该考虑到多个学生可能具有相同的价值。因此,请使用in而不是=

where s.pesel in (select top 1 m.pesel
                  from Meldunek as m
                  group by m.pesel
                  order by count(*) desc
                 );

此逻辑可以插入到您的查询中,因此您只返回顶级借阅学生。

完整查询如下:

select s.Name, s.LastName, b.Title
from (Meldunek as m inner join
      Students s
      on m.pesel = s.pesel
     ) inner join
     Books as b
     on s.pesel = b.pesel
where s.pesel in (select top 1 m2.pesel
                  from Meldunek as m2
                  group by m2.pesel
                  order by count(*) desc
                 );