URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7146
[ Назад ]

Исходное сообщение
"Запрос тапа 'top10, top100.....'"

Отправлено BaldyMan , 01-Фев-08 17:33 
Доброго времени суток!
Собственно сабж.
Поделитесь мыслями, как лучше построить запрос, чтобы он делал выборку из таблицы базы с критерием top100, top10 и т.д. по количеству повторяющихся записей в определенном столбце таблицы...

Содержание

Сообщения в этом обсуждении
"Запрос тапа 'top10, top100.....'"
Отправлено angra , 03-Фев-08 02:03 
На нечеткий вопрос можно дать только общий ответ - используйте group by, order, limit

"Запрос тапа 'top10, top100.....'"
Отправлено Костя , 03-Фев-08 03:24 
>На нечеткий вопрос можно дать только общий ответ - используйте group by,
>order, limit

Хорошо, тогда конкретней так:
Парсятся логи сквида в табличку mysql.
К примеру есть пользователь Вася с ip-адресом 1.2.3.4, который скачал 150 метров и у меня это вызвало интерес. Как мне правильно сформировать такой запрос, чтобы узнать к примеру 10 самых посещаемых им сайтов, и 10 сайтов с которых он больше всего скачал информации.

mysql> describe logs;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| ip     | varchar(20)  | YES  |     | NULL    |       |
| date   | date         | YES  |     | NULL    |       |
| time   | time         | YES  |     | NULL    |       |
| method | varchar(50)  | YES  |     | NULL    |       |
| url    | varchar(255) | YES  |     | NULL    |       |
| type   | varchar(50)  | YES  |     | NULL    |       |
| size   | bigint(20)   | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+


"Запрос тапа 'top10, top100.....'"
Отправлено angra , 04-Фев-08 11:46 
Ну например так
select url, count(url) from logs where ip='1.2.3.4' group by url order by 2 DESC limit 10
select url, sum(size) from logs where ip='1.2.3.4' group by url order by 2 DESC limit 10