powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение максимального значения на определенные даты
6 сообщений из 6, страница 1 из 1
Определение максимального значения на определенные даты
    #38465830
Eugene87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Задача такая - есть таблица, в которой хранится история изменений статуса юзера, содержит такие поля id,dateCreated,idUser,idNewStatus
Стоит задача определить статус юзера по состоянию на конец каждого месяца с момента регистрации по текущий месяц.

Хочу уточнить момент:статусы могут только повышаться, т.е. по сути надо найти максимальный статус на конец месяца

Честно говоря, не совсем пойму как это сделать чисто средствами mysql, не прибегая к php
...
Рейтинг: 0 / 0
Определение максимального значения на определенные даты
    #38465834
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. FAQ про переменные и про группы.
...
Рейтинг: 0 / 0
Определение максимального значения на определенные даты
    #38465863
Eugene87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftСм. FAQ про переменные и про группы.
ясно. киньте ссылку, если не затруднит, а то я на форуме плохо ориентируюсь. В разделе FAQ - http://www.sql.ru/faq/faq.aspx не нашел нужной информации, а поиск по-ходу только по темам ищет.
...
Рейтинг: 0 / 0
Определение максимального значения на определенные даты
    #38465886
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene87Здравствуйте!
Задача такая - есть таблица, в которой хранится история изменений статуса юзера, содержит такие поля id,dateCreated,idUser,idNewStatus
Стоит задача определить статус юзера по состоянию на конец каждого месяца с момента регистрации по текущий месяц.

Хочу уточнить момент:статусы могут только повышаться, т.е. по сути надо найти максимальный статус на конец месяца

Честно говоря, не совсем пойму как это сделать чисто средствами mysql, не прибегая к php

задачу можно решить несколькими способами, выбирайте:

1. зная что статус только расте то просто максимум ппо мезяцам:

select date_format(dateCreated,'%Y-%m') year_month, max(status) max_status
from users
where user_id = 123
group by 1

2. если статус таки иногда падает, то ФАК -- выборка первой/послдней
записи в группах. В данном контексте -- группа это месяц

3. Если статусы строго каждодневные, то можно
задать пробег по месяцам и выбирать записи конкретно
на последний день каждого месяца.
...
Рейтинг: 0 / 0
Определение максимального значения на определенные даты
    #38465892
Eugene87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbcEugene87Здравствуйте!
Задача такая - есть таблица, в которой хранится история изменений статуса юзера, содержит такие поля id,dateCreated,idUser,idNewStatus
Стоит задача определить статус юзера по состоянию на конец каждого месяца с момента регистрации по текущий месяц.

Хочу уточнить момент:статусы могут только повышаться, т.е. по сути надо найти максимальный статус на конец месяца

Честно говоря, не совсем пойму как это сделать чисто средствами mysql, не прибегая к php

задачу можно решить несколькими способами, выбирайте:

1. зная что статус только расте то просто максимум ппо мезяцам:

select date_format(dateCreated,'%Y-%m') year_month, max(status) max_status
from users
where user_id = 123
group by 1

2. если статус таки иногда падает, то ФАК -- выборка первой/послдней
записи в группах. В данном контексте -- группа это месяц

3. Если статусы строго каждодневные, то можно
задать пробег по месяцам и выбирать записи конкретно
на последний день каждого месяца.

Решение как в п.1 не получиться применить, так как в конкретном месяце статус вообще мог не меняться. Например, статус менялся два раза в августе, а потом следующее изменение произошло только в октябре. Вышеуказанный запрос вернет ответ такого вида
2013-08 Статус1
2013-10 Статус2
т.е. записи для сентября не будет, так как в этом месяце не было изменения статуса.
Если бы этот результат сразу отправлялся на вывод, то это не проблема. Но этот запрос планируется использовать как подзапрос и связь будет именно по полю с месяцем year_month, т.е. поле с месяцем 2013-09 необходимо явно отобразить
...
Рейтинг: 0 / 0
Определение максимального значения на определенные даты
    #38465903
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene87,

тогда вам надо так или иначе иметь "опорную"
таблицу со всеми требуемыми месяцами:

select mesyc,
(select max(status) from user_stat
where id = 123 and dateCrea < mesqc) max_status
from mesyci

месяцы должны быть указаны как , например, '2013-04-01'.
Статус будет выдан на предыдуший момент, т.е. на
2013-03-31 23:59:59
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение максимального значения на определенные даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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