Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Группировка по datetime

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Грачи прилетели
Отправлено: 29 Сентября, 2016 - 11:10:32
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Добрый день!

Есть два поля

id int(11) AUTO_INCREMENT
sozdana (datetime)

Запросом

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(`id`) AS ids, `sozdana` FROM `rr_kr` GROUP BY `sozdana`


я получаю кол-во записей по каждому моменту времени, а мне необходимо сделать группировку по интервалу по часам
Что-то типа
Интервал Кол-во
00:00-01:00 20
01:00-02:00 30
02:00-03:00 40

Это реально одним запросом сделать?

Спасибо
(Добавление)
Что-то типа
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(`id`) AS ids, DATE_FORMAT(sozdana,'%y%m%d%H') AS num_hour
  2. FROM 'rr_kr'  
  3.  
  4. GROUP BY DATE_FORMAT(sozdana,'%y%m%d%H')


но дает ошибку. Пока ищу варианты, если кто-то в теме подскажет, буду признателен

(Отредактировано автором: 29 Сентября, 2016 - 11:29:55)

 
 Top
Мелкий Супермодератор
Отправлено: 29 Сентября, 2016 - 11:27:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT hour(created_at) AS created_hour, count(0) FROM tablename GROUP BY created_hour

За весь период, например для статистики, в какой час добавляется больше записей.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT date(created_at) AS created_date, hour(created_at) AS created_hour, count(0) FROM tablename GROUP BY created_date, created_hour

Либо (мог напутать местами аргументы date_format)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT date_format('%Y-%m-%d %H', created_at) AS created_date, count(0) FROM tablename GROUP BY created_date

Агрегация раздельно по дням.


-----
PostgreSQL DBA
 
 Top
Грачи прилетели
Отправлено: 29 Сентября, 2016 - 11:33:39
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Спасибо!

Попробовал
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   COUNT(id) AS ids,
  3.   DATE_FORMAT('%Y-%m-%d %H',  sozdana) AS created_date
  4. FROM
  5.   rr_kr
  6. GROUP BY
  7.   created_date


запрос выполняется, но нет группировки по дням
выводит
ids created_date
1336 NULL
 
 Top
Мелкий Супермодератор
Отправлено: 29 Сентября, 2016 - 11:58:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




https://dev[dot]mysql[dot]com/doc/refman[dot][dot][dot]tion_date-format
Ну да, перепутал порядок.


-----
PostgreSQL DBA
 
 Top
Грачи прилетели
Отправлено: 29 Сентября, 2016 - 22:23:36
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




А если усложнить задачу и в запросе

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT date(`sozdana`) AS created_date, hour(`sozdana`) AS created_hour, count(0) FROM rr_kr GROUP BY created_date, created_hour  
  2. ORDER BY count(0)  DESC


надо вывести только максимальные значения по каждому часу? т.е. не показывать все дни, а только часы и максимальное кол-во в этот час ?
Реально запросом?
 
 Top
Мелкий Супермодератор
Отправлено: 29 Сентября, 2016 - 23:00:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Запросто. Понять бы только, что именно нужно. И не ответил ли я уже на этот вопрос чуть ранее.
Может, завтра пойму.


-----
PostgreSQL DBA
 
 Top
Грачи прилетели
Отправлено: 29 Сентября, 2016 - 23:12:10
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Мелкий пишет:
Запросто. Понять бы только, что именно нужно. И не ответил ли я уже на этот вопрос чуть ранее.
Может, завтра пойму.


Вы мне помогли сегодня, но не могу плюсануть спасибо функционалом форума, т.к. мало сообщений на форуме.

Что касается запроса, то видимо это , в моем понимании, что-то близкое с MAX COUNT(`id`) и без GROUP BY created_date
только GROUP BY created_hour
но пока не получается составить запрос

Спасибо! Улыбка

(Отредактировано автором: 29 Сентября, 2016 - 23:13:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB