从最大组中获取所有值
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
);
我有 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
);