是否可以通过一个查询的结果检索多个组?
目前我有一个自由文本书名搜索系统,它返回前X行:
首先查询书名
SELECT TOP 16 grouped_location, grouped_author, book_title
FROM books
WHERE book_title like '%foo%'
然后查询位置组
SELECT grouped_location, COUNT(*)
FROM books
WHERE book_title like '%foo%'
GROUP BY grouped_location
然后查询作者组:....
是否可以通过一次搜索检索此信息? 通过向SQL服务器发送多个命令我没有问题,但目标是SQL服务器只执行一次搜索,而不是通过搜索三次来耗尽所有资源。
请记住,通过将所有记录返回给客户端并计算分组结果,客户端解决方案不是一种选择。由于性能原因,它只需要返回TOP X记录。
答案 0 :(得分:1)
此查询将为您提供rowdétails,每行包含按count_location计数。 更改ORDER BY以满足您的要求
select top 16 grouped_location, grouped_author, book_title,
count(*) over (partition by grouped_location) as [count]
FROM books
WHERE book_title like '%foo%'
-- order by grouped_author or some other column
order by [count] desc
答案 1 :(得分:0)
要查看仅按grouped_location
分组的信息,您可以这样......
SELECT grouped_location , COUNT(*) Totals
FROM
(
SELECT TOP 16 grouped_location, grouped_author, book_title
FROM books
WHERE book_title like '%foo%'
ORDER BY Some_Column
) Q
GROUP BY grouped_location
要查看按All the columns
分组的信息,您可以这样......
SELECT grouped_location, grouped_author, book_title, COUNT(*) Totals
FROM
(
SELECT TOP 16 grouped_location, grouped_author, book_title
FROM books
WHERE book_title like '%foo%'
ORDER BY Some_Column
) Q
GROUP BY grouped_location, grouped_author, book_title