2013-12-22 5 views
0

Возможно ли получить несколько групп по результатам одного запроса?sql server получить несколько групп по результатам одного результата запроса

В настоящее время я имею в FREETEXT книги название поисковой системы, которая возвращает верхние строки 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

Чтобы посмотреть информацию только сгруппированы по 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 
1

Это запрос даст вам строки détails, с count by grouped_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 
Смежные вопросы