Выберите отдельные значения из многих таблиц в запросе SQL Server с помощью группировки по и упорядочить по? - PullRequest
0 голосов
/ 01 июля 2010

Я пытаюсь выбрать отличные 10 лучших URL-адресов, это число (url) и размер из log_table, объединяющего и другие таблицы.

Я пробовал следующий запрос SQL Server:

select distinct top 10 
    url, count(url) as hits, 
    size as data 
from log_table 
where log_table.IP in 
             (select IPAddress from IP where IP.IPId in 
                    (select IPId from userIP where userIP.userId in 
                         (select userId from Users)))
group by url, size 
order by hits desc

Это не дает мне четкого URL. Но когда я пытаюсь выполнить следующий запрос без размера, он дает разные URL и хиты.

select distinct top 10 
   url, count(url) as hits 
from log_table 
where log_table.IP in 
        (select IPAddress from IP where IP.IPId in 
             (select IPId from userIP where userIP.userId in 
                  (select userId from Users)))
group by url 
order by hits desc

Что мне нужно сделать, чтобы выбрать отдельный URL, его хиты и используемый размер. URL, размер взят из таблицы log_table.

Любая помощь приветствуется.

Спасибо.

1 Ответ

0 голосов
/ 21 июля 2010

Причина, по которой ваш первый запрос не возвращает отдельных URL-адресов, заключается в том, что вы группируете как по URL-адресу, так и по размеру.Когда вы группируете по обоим этим столбцам, вы получите строку для каждой комбинации значений.Таким образом, если url «a» имеет размер 5 и 10, то будут созданы две группы: [a 5] и [a 10].Вам нужно будет использовать некоторую статистическую функцию для столбца размера, чтобы получить что-то обратно, например:

select top 10 
   url, count(url) as hits 
   , max(size) as size
from log_table 
where log_table.IP in 
        (select IPAddress from IP where IP.IPId in 
             (select IPId from userIP where userIP.userId in 
                  (select userId from Users)))
group by url 
order by hits desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...