- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
SELECT site, SUM(count) FROM `$ipdb` GROUP BY site ORDER BY SUM(count) DESC LIMIT 20;
id ip site count
31 195.189.X.X 18 14
нужно сделать выборку из базы данных (структура выше) что бы был вернут результат в виде 20 сайтов с наибольшей суммой коунта. В базе есть несколько записей с одним и тем же номером сайта и неким количеством count у каждого, но с разными ip. Так вот нужно вывести 20 сайтов с максимальным суммарным count.
В принципе этот запрос
SELECT site, SUM(count) FROM `$ipdb` GROUP BY site;
выводит весь список сайтов с суммарным count
можно ли к результату выборки применить сортировку по убыванию и обрезание первых 20 результатов какой либо функцией? Или полная выгрузка в массив и уже обработка там неизбежна?
Язык PHP если что.
А чем самый верхний запрос не подходит? Он ведь и отличается от второго тем, что сортирует и обезает.
Можно, почему бы и нет?
А чем самый верхний запрос не подходит?
Он не работает :)
Нельзя сортировать по функции видимо.
ORDER BY count - работает
а ORDER BY SUM(count) - :( не работает.
Можно, почему бы и нет?
И каким образом это сделать?
Нельзя сортировать по функции видимо.
ORDER BY count - работает
аа:)
SELECT site, SUM(count) as sumcount FROM `$ipdb` GROUP BY site ORDER BY sumcount DESC LIMIT 20;
мне нужна сортировка именно по сумме
мне нужна сортировка именно по сумме
поправил предыдущее сообщение, чтоб не возникало непоняток:)
согласен с DenIT, впрочем если у Вас не мощный ресурс по 10-50к посетителей в день, я думаю, что считывание первых 20 строчек из результирующего набора вместо явной сортировки никак не отразится на скорости работы сервера.
ну, имхо, лучше сразу писать оптимальные решения, потому что если ситуация изменится (увеличится посещаемость, уменьшатся ресурсы и т.п.) - замучаешься вычищать из всех запросов по чуть-чуть, чтобы проект в целом работал чуть быстрее:)
PS: а вообще, в данном случае пофиг - т.к. mysql работает таким образом, что сначала выбирает все записи, соответствующие условию (т.е. полноценный запрос), а LIMIT использует только для вывода. Т.е. экономия получается на обработке массива средствами PHP.
DenIT, ну да, вопрос как раз к тому и сводится, чтобы сэкономить ресурсы на обработке массива средствами ПХП. Но некоторым сайтам (большинству) уже по определению не стать мегапорталами. И все же,
работает ли это?