创建一个VIEW并显示至少20%的客户借用的标题

问题描述 投票:0回答:1

我需要创建一个VIEW并显示至少20%的客户借用的标题

这是我到目前为止所拥有的:

SELECT Book.BookTitle
FROM Book, Borrower, Client
WHERE Book.BookId = Borrower.BookId AND Borrower.ClientId = Client.ClientId AND COUNT(Book.BookId) > 
(SELECT COUNT(Client.ClientId) FROM Client)*0.2
GROUP BY Book.BookTitle
ORDER BY COUNT(Book.BookTitle) DESC;

我一直收到此错误:信息147,第15级,州1,第547行聚合可能不会出现在WHERE子句中,除非它在HAVING子句或选择列表中包含的子查询中,并且正在聚合的列是外部引用。

我在做什么错?

sql sql-server
1个回答
0
投票

我不认为此查询将为您提供所需的内容,即“ 显示至少20%的客户借用的标题”,但我在语法上更正了您的查询。您不能在where子句中使用聚合函数。并且group by子句在查询中的位置不正确。

SELECT 
Book.BookTitle, COUNT(Book.BookId)
FROM 
Book 
join Borrower
on Book.BookId = Borrower.BookId
join Client
on Borrower.ClientId = Client.ClientId 
GROUP BY Book.BookTitle
having COUNT(Book.BookId) > 
(SELECT COUNT(Client.ClientId) FROM Client)*0.2
ORDER BY COUNT(Book.BookTitle) DESC;
© www.soinside.com 2019 - 2024. All rights reserved.