从最大组中获取所有值

Get all values from biggest group

我有 table 个学生和 table 个他们借的书。我需要找到一个借书最多的学生并显示这些书的名称。

目前我有一份学生名单和每个学生借的书的数量,降序排列。我可以通过 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;

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

得到借书最多的学生:

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
                 );

可以将此逻辑插入到您的查询中,因此您 return 仅借用最优秀的学生。

完整的查询如下所示:

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
                 );