Текущий архив: 2008.05.25;
Скачать: CL | DM;
Вниз
sql запрос Найти похожие ветки
← →
brother (2008-04-11 05:20) [0]Всем привет. Помогите написать sql запрос для выборки топ10 сайтов по посещаемости за месяц из таблицы со структурой:
имя таблицы: www
структура: ID, Time, Duration, SourceIP, CodeID, Status, Filesize, MethodID, Proto, Site, Path, LoginID, PeerStatusID, PeerHost, Type, GroupID, LocalTraffic
где time - полная дата со временем посещенного узла
site - адресс сайта без дополнительных параметров (типа www.mail.ru)
Чешу репу и не знаю с какой стороны к данной проблемме подойти...
← →
brother (2008-04-11 05:51) [1]зы синтакси запрса не firebird
← →
Sergey13 © (2008-04-11 08:45) [2]> [0] brother (11.04.08 05:20)
> Чешу репу и не знаю с какой стороны к данной проблемме подойти...
> [1] brother (11.04.08 05:51)
> синтакси запрса не firebird
Чешу свою репу для прочтения вопроса и выбора СУБД для ответа. 8-)
← →
Павел Калугин © (2008-04-11 08:54) [3]> [2] Sergey13 © (11.04.08 08:45)
а что чесать.. Стандарт он и в Африке стандарт
как то приводился примет типа "пронумеровать строки внутри запроса"
по томуже принципу можно и эта, от обрать первые N записей.
← →
Sergey13 © (2008-04-11 09:08) [4]> [3] Павел Калугин © (11.04.08 08:54)
> по томуже принципу можно и эта
Ну, если пользоваться только этим принципом, то наверное. 8-)
Если список принципов несколько расщирить, но например для НЕжелательного файрберда можно указать FIRST, для мелкомягкого сервера TOP, для Оракла можно использовать ROWNUM.
← →
Simpson © (2008-04-11 10:02) [5]Долго только выполняться будет
select count(id),siteid from site where SourceIP in (select distinct(SourceIP) from site) group by siteid;
Или если позволяет СУБД
select si.sip,(select count(*) from site s where s.SourceIP = si.sip)
from
(select distinct(SourceIP) as sip from site) as si;
Где то так помойму будет работать
← →
Simpson © (2008-04-11 10:04) [6]limit в конце надо указать для вашей бд
← →
Simpson © (2008-04-11 10:09) [7]select res.sip,res.scount
(select si.sip as sip,(select count(*) from site s where s.SourceIP = si.sip) as scount
from
(select distinct(SourceIP) as sip from site) as si) as res offset 0 limit 10;
← →
мимоносец (2008-04-11 10:41) [8]Примерно так
select top 10
site,
count(1)
from
www
where
time between PeriodBegin and PeriodEnd
group by
site
order by
count(1) desc
здесь PeriodBegin и PeriodEnd - начало и конец интересующего периода соответственно.
← →
brother (2008-04-11 11:06) [9]всем спасибо буду применять и разбираться дальше
← →
Павел Калугин © (2008-04-11 15:06) [10]
> Sergey13 © (11.04.08 09:08) [4]
ну а коль СУБД не указана то того. по стандалру. его все должны поддерживать.
> Simpson © (11.04.08 10:04) [6]
limit? а в MS оно где?
> мимоносец (11.04.08 10:41) [8]
> Примерно так
>
> select top 10
и в Sybase получите ошибку о неизвестном полн top:)
← →
Sergey13 © (2008-04-11 15:28) [11]> [10] Павел Калугин © (11.04.08 15:06)
> его все должны поддерживать.
Забрать весь запрос на клиента и показать только нужное количество. 8-)
← →
wicked © (2008-04-11 16:15) [12]
> и в Sybase получите ошибку о неизвестном полн top:)
сколько не работал с ASA 8 и ASA 9 - ошибок на top не было
← →
Павел Калугин © (2008-04-11 16:20) [13]
> wicked © (11.04.08 16:15) [12]
странно. я вот только с ASE работал. нети там слова top. по другому приходится писать. неужели такие различия?
← →
wicked © (2008-04-11 20:45) [14]
> неужели такие различия?
да, вполне
причем, у меня сложилось впечатление, что sybase искусственно пытается сделать всё, чтобы ASA и ASE не конкурировали
ASE - их разработка, выкинуть жалко, особенно глядя, что с ней микрософт сделал :)
ASA - очень продвинутая купленная разработка (watcom sql), тоже жалко убить
вот и мучаются, разграничивают как могут :)
← →
Simpson © (2008-04-11 22:37) [15]Павел Калугин © (11.04.08 15:06) [10]
А разве нету? А какие нибудь синонимы есть?
зы
PostgreSql, MySQL мои наречия
зыы
Я вообще то ждал ответ а автора что не работает))
Чтобы сказать что код нигде не тестировался и писался сразу в форум
← →
мимоносец (2008-04-11 23:49) [16]Павел Калугин © (11.04.08 15:06) [10]
>и в Sybase получите ошибку о неизвестном полн top:)
А что, кто-то просил sybase? Нет. Просили не firebird. Получили не firebird. К тому же написано было - примерно. То есть, чтобы смысл был понятен. Как это реализовать на разных диалектах - это уже другой вопрос. Так что претензии мимо кассы. :P
Страницы: 1 вся ветка
Текущий архив: 2008.05.25;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.011 c