Mysql Запрос на подсчет одинаковых записей в день.

Duvanov

Новичок
Приветствую.
Подскажите пожалуйста.
Есть такая таблица где хранятся данные о заходах из разных рекламных сетей (google / yandex)
то есть таблица вида:

id | search_system | data_create

нужно сделать так, что бы в итоге получилось:

12:06:16 | 6 (все упоминания слова google в этом диапазоне времени) | 6 (все упоминания слова yandex в этом диапазоне времени)
-----------------------------------
13:06:16 | 6 (все упоминания слова google в этом диапазоне времени) | 6 (все упоминания слова yandex в этом диапазоне времени)
-----------------------------------

Проблема в том что дата хранится в виде: 2016-07-15 13:02:59 (решено через DATE_FORMAT)
Вторая проблема это группировка по датам

Получается что нужно делать вложенный запрос.
Сначала выбрать все уникальные даты:

SELECT DISTINCT DATE_FORMAT(data_create,'%d.%m.%Y') AS date_X FROM table_name ORDER BY date_x DESC

но как на основе этих дат подсчитать количество повторяющихся значений?
А потом еще и вывести как писал выше.

Попытка подсчитать просто id с группировкой по дате приводит к 0.

SELECT COUNT(id) as IDS, data_create FROM `request` WHERE `data_create` IN ( SELECT DISTINCT DATE_FORMAT(data_create,'%d.%m.%Y') AS data_create FROM request ) ORDER BY data_create


Буду рад помощи. Спасибо.
 

Duvanov

Новичок
Еще сложность в том что нужно сделать эту выборку с подсчетом только для уникальных значений в заданном диапазоне.
 

Breeze

goshogun
Команда форума
Партнер клуба
И много у тебя data_create в формате %d.%m.%Y ?
 

Duvanov

Новичок
трошки глуповат
Код:
SELECT COUNT(id) as IDS, DATE_FORMAT(data_create,'%d.%m.%Y')
FROM `request`
group by date(`data_create`)
Если на то пошло, то ваш ответ не верен. Потому что нет уникализации относительно ip
А по поводу вашей желчи. Не знать не стыдно, стыдно не учиться.
 

WMix

герр M:)ller
Партнер клуба
Если на то пошло, то ваш ответ не верен. Потому что нет уникализации относительно ip
про ip только сейчас придумал?
Не знать не стыдно, стыдно не учиться.
вот и я о томже, тебе дали правильный ответ раньше, нужно задуматься
 

antson

Новичок
Партнер клуба
@Duvanov, ну что за наезды.
ip в твоей таблице не было.
полностью готового решения за тебя на форуме никто не будет делать.
Здесь подсказывают в какую сторону нужно САМОСТОЯТЕЛЬНО двигаться.
Ты не знал про функции работы с датой и неправильно выстроил логику запроса.

Правильно воспользоваться штатными средствами субд.

Что требуется от базы
ВЫБЕРИ кол-во записей (теперь уникальных ип), дату в правильном виде из таблицы_логов где дата больше последней недели/месяца.дня
сгруппировкой по рекламной сети, нужно части даты отсортировав их по убыванию даты


такой запрос вернет
30.10.2016 яндекс 11
30.10.2016 гугля 8
29.10.2016 яндекс 14
если не было захода, то строки не будет

если же нужно наличие всех систем и без пропуска дат
то нужно делать запрос по схеме объединения
все_системы
нужные_даты
логи

все_системы и нужные_даты объединяются без условий , чтобы получить все сочетания кортежей
и потом по лефт оутер с логами.

еще интересней вариант когда нужно
дата , яндекс, гугля, рамблер
30.10 11 8 0
29.10 14 0 0

но такой запрос тебе на самоизучение
 
Сверху