[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросом
Vavilon79
имеется таблица:

id |    dates       |    times      |    ip
1 2011-09-14 08:24:32 192.168.1.1


задача:
Выбрать количество уникальных ip записей за день, после сгруппировать эти записи по месяцам за выбранный диапазон времени
т.е. должны получить
количество  |   месяц
15 8
2 9
1 10
5 12


Вот до чего дошел
SELECT COUNT(DISTINCT ip) cnt, MONTH(`dates`) dt FROM `table` WHERE `dates` BETWEEN '2011-01-01' AND '2011-12-31' GROUP BY `dates`


выводит не совсем то, что нужно

помогите советом или примером



Спустя 5 минут, 59 секунд (28.09.2011 - 23:22) Winston написал(а):
Цитата (Vavilon79 @ 28.09.2011 - 23:16)
SELECT COUNT(DISTINCT ip) cnt, MONTH(`dates`) dt

В селекте должно использоваться as для псевдонимов
SELECT COUNT(DISTINCT ip) AS cnt, MONTH(`dates`) AS dt

Спустя 5 минут, 13 секунд (28.09.2011 - 23:27) Vavilon79 написал(а):
Цитата
В селекте должно использоваться as для псевдонимов

это не обязательно и без них работает.

Спустя 18 минут, 47 секунд (28.09.2011 - 23:46) Игорь_Vasinsky написал(а):
А так пробывал?

mysql_query("SELECT COUNT(DISTINCT ip) cnt, MONTH(`dates`) dt") or die (mysql_error());

Спустя 15 минут, 27 секунд (29.09.2011 - 00:01) Vavilon79 написал(а):
нет, не пробовал. только не пойму что это даст таблица не указана или сказать какая высветится ошибка. я запросы выполняю прямо в phpMyAdmin

Спустя 38 минут, 18 секунд (29.09.2011 - 00:40) Игорь_Vasinsky написал(а):
И что выводит как надо?

Спустя 8 часов, 10 минут, 3 секунды (29.09.2011 - 08:50) Vavilon79 написал(а):
к сожалению нет.
вот кому будет интересно, додумал не сам, помогли.

select MONTH(`dates`), sum(cnt) cnt
from

(SELECT COUNT(DISTINCT ip) cnt, `dates`
FROM `table`
WHERE `dates` BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY `dates`) a

group by MONTH(`dates`)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.