powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка с разбивкой по месяцам
14 сообщений из 14, страница 1 из 1
Выборка с разбивкой по месяцам
    #37979592
krn-prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MySQL есть таблица посетителей, в которую заносятся: дата посещения, ФИО и еще пара полей. Нужно сделать выборку, которая возвращала бы число посетителе с разбивкой по месяцам. Это можно сделать ручками - в цикле самому выбирать интервал в месяц и делать запрос, но может быть есть механизм, позволяющий вернуть уже готовую выборку?

Пример данных:
12.07.2012
17.07.2012
21.07.2012
02.08.2012
11.08.2012

результат:
07.2012 - 3
08.2012 - 2
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979659
AlexeyVD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если дата у вас хранится в поле с типом DATE, то можно вон так, например:
Код: sql
1.
2.
3.
SELECT COUNT(1)
  FROM table1 t1
  GROUP BY LEFT(mydate, 7);
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979696
Алексей Дарьин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyVD,

Тогда уж:
Код: sql
1.
2.
3.
SELECT mydate, COUNT(1)
  FROM table1
  GROUP BY month(mydate);
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979716
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Дарьин, ага, и потерять при этом год.
ЗЫ. Лучше через date_format, а то left всё-таки для работы со строками предназначен.
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979813
AlexeyVD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Дарьин,

Про год не забывайте.

tanglir ,

Да, можно через date_format:
Код: sql
1.
GROUP BY date_format(mydate, "%Y-%m");
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979950
Алексей Дарьин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

Да, согласен.
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37979985
krn-prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyVDАлексей Дарьин,

Про год не забывайте.

tanglir ,

Да, можно через date_format:
Код: sql
1.
GROUP BY date_format(mydate, "%Y-%m");



Работает. А если потребуется в разрезе по неделям, то тогда формат %Y-%m не подходит. Что делать в это случае?
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37980000
AlexeyVD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krn-prog,

Читать мануал про date_format
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37980018
krn-prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyVDkrn-prog,

Читать мануал про date_format

Формат: %Y-%u

Все работает. И с месяцами и с неделями. Спасибо. Избавили меня от лишнего кодирования.
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #37980063
krn-prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итоговый запрос:

Код: sql
1.
SELECT date_format(mydata, "%Y-%m"), COUNT(1) FROM mytable where mydata is not null GROUP BY date_format(mydata, "%Y-%m")



Результат:
2012-07, 123
2012-08, 456
2012-09, 789
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #38001940
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне тоже нужен подобный запрос, но нужна детализация по месяцам за этот год, а предыдущие года нужно схлопнуть в год. Т.е. 2012 разбивка по месяцам (это сделано в примере), 2011 за весь год count(), 2010 год аналогично. Старше данные не интересуют.
Подскажите пожалуйста как это могу сделать.
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #38002090
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dsmartМне тоже нужен подобный запрос, но нужна детализация по месяцам за этот год, а предыдущие года нужно схлопнуть в год. Т.е. 2012 разбивка по месяцам (это сделано в примере), 2011 за весь год count(), 2010 год аналогично. Старше данные не интересуют.
Подскажите пожалуйста как это могу сделать.
Код: sql
1.
GROUP BY case when Year(mydate)=2012 then date_format(mydate, "%Y-%m") else date_format(mydate, "%Y") end
...
Рейтинг: 0 / 0
Выборка с разбивкой по месяцам
    #38002955
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо получилось
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выборка с разбивкой по месяцам
    #40035391
stsmith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Дарьин,

Можно про "локальный синтаксис" mydate и t1 поподробнее?
Например, table1 - исходная таблица с датами и пользователями, чей вход нужно подсчитывать.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка с разбивкой по месяцам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]