powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка за каждую неделю
5 сообщений из 5, страница 1 из 1
Выборка за каждую неделю
    #39054475
vitalmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте товарищи!
Есть бд users = id | name | date | level | stat1 | stat2 где date типа DATE, level от 1 до 13 и stat1,stat2 INT.
Необходимо сделать выборку по максимальным статам по каждому level, при этом если за календарную неделю есть несколько записей у юзера учитывать только последнюю.

Последние значения для конкрентого юзера по неделям получаю так
Код: sql
1.
SELECT * FROM (SELECT name, date, level, date_format(DATE, '%u') AS d FROM `users` WHERE name='name' ORDER BY DATE DESC ) AS week GROUP BY d ORDER BY DATE ASC 


А необходимо найти максимальное значение stat1 например, среди всех юзеров учитывая level и календарную неделю.
...
Рейтинг: 0 / 0
Выборка за каждую неделю
    #39054535
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitalmar,

Код: sql
1.
2.
3.
4.
5.
select level, max(greatest(stat1, stat2)) stat 
    from 
        (select level, stat1, stat2 from users order by level, date desc, id) u
    where date between date_sub(now(), INTERVAL 1 WEEK) and now() 
    group by level
...
Рейтинг: 0 / 0
Выборка за каждую неделю
    #39054538
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select level, max(greatest(stat1, stat2)) stat 
    from 
        (select level, stat1, stat2 
            from users 
            where date between date_sub(now(), INTERVAL 1 WEEK) and now() 
            order by level, date desc, id
        ) u
    group by level
...
Рейтинг: 0 / 0
Выборка за каждую неделю
    #39054544
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select yw, level, max(greatest(stat1, stat2)) stat 
    from 
        (select level, stat1, stat2, yearweek(date) yw
            from users 
            order by level, date desc, id
        ) u
    group by level, yw
...
Рейтинг: 0 / 0
Выборка за каждую неделю
    #39054588
vitalmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lumix, спасибо за помощь, в вашем варианте отсчет недель начинается с 15, а по календарю за 2014 год должна начинаться с 16, возможно это моя промашка, что не указал всю информацию.
Вариант с DATE_FORMAT( DATE, '%u' ) вместо yearweek(date) + после group by level, yw дописал order by level, date asc
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка за каждую неделю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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