SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.06.2016 23:34:32

inmerdorm
Участник
Зарегистрирован: 12.08.2014
Сообщений: 24

Как выбрать максимальное значение при группировке?

Всем здравия!

Помогите, пожалуйста, не могу сообразить, как при группировке по дате выбрать максимальное значение второго поля?

Таблица:
id | date | number
1  | 2016-10-21 | 1
2  | 2016-10-21 | 2
3  | 2016-10-21 | 4
4  | 2016-10-22 | 1
5  | 2016-10-22 | 8
6  | 2016-10-22 | 2

Желаемый результат:
3  | 2016-10-21 | 4
5  | 2016-10-22 | 8

Заранее спасибо.

Неактивен

 

#2 20.06.2016 23:37:45

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Как выбрать максимальное значение при группировке?

есть как минимум 5 способов smile
http://sqlinfo.ru/articles/info/18.html

Неактивен

 

#3 25.06.2016 19:33:41

inmerdorm
Участник
Зарегистрирован: 12.08.2014
Сообщений: 24

Re: Как выбрать максимальное значение при группировке?

На сколько я понимаю, там предлагается дату (timestamp) взять как за уникальное поле, а у меня даты одинаковые, и по ним нужно сгруппировать. Видимо, я чего-то недопонимаю (

Неактивен

 

#4 25.06.2016 19:54:37

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Как выбрать максимальное значение при группировке?

в статье группировка идет по пользователю для которого выбирается максимальная дата
у вас группировка по дате для которой максимальный number

в примерах из статьи замените user_id на date, а time на number

Неактивен

 

#5 29.06.2016 11:13:35

inmerdorm
Участник
Зарегистрирован: 12.08.2014
Сообщений: 24

Re: Как выбрать максимальное значение при группировке?

Vasya, получилось, спасибо!

Однако, к текущему моменту задача усложнилась.

Необходимо в рамках текущей даты выбрать максимальный number для каждого user_id.

Таблица:
id | date | number | user_id
1  | 2016-10-21 | 1 | 1
2  | 2016-10-21 | 2 | 1
3  | 2016-10-21 | 4 | 2
4  | 2016-10-21 | 1 | 2
5  | 2016-10-22 | 8 | 1
6  | 2016-10-22 | 2 | 1
7  | 2016-10-22 | 1 | 2
8  | 2016-10-22 | 2 | 2
9  | 2016-10-22 | 4 | 2

Желаемый результат:
2  | 2016-10-21 | 2 | 1
3  | 2016-10-21 | 4 | 2
5  | 2016-10-22 | 8 | 1
9  | 2016-10-22 | 4 | 2


Чё-то никак не могу продолжить мысль, как это сделать (

Неактивен

 

#6 29.06.2016 13:04:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Как выбрать максимальное значение при группировке?

группировка по дате и пользователю

Неактивен

 

#7 02.07.2016 17:14:18

inmerdorm
Участник
Зарегистрирован: 12.08.2014
Сообщений: 24

Re: Как выбрать максимальное значение при группировке?

vasya,
не понимаю

Неактивен

 

#8 02.07.2016 20:35:16

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Как выбрать максимальное значение при группировке?

SELECT max(number),`date`,user_id FROM t GROUP BY `date`,user_id;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 08.07.2016 10:15:05

inmerdorm
Участник
Зарегистрирован: 12.08.2014
Сообщений: 24

Re: Как выбрать максимальное значение при группировке?

deadka, ну тогда у нас не будет id чтобы обращаться к этим строкам в дальнейшем


p.s. а, нет, можно, надо было просто ONLY_FULL_GROUP_BY отключить и можно добавить к выборке ещё поля.

p.p.s.
хотя, чёто странное творится
SELECT max(number),`date`,user_id,`id` FROM t GROUP BY `date`,user_id;
выдаёт какие-то неправильные айдишники

Отредактированно inmerdorm (08.07.2016 10:35:25)

Неактивен

 

#10 08.07.2016 11:02:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Как выбрать максимальное значение при группировке?

так и должно быть
http://sqlinfo.ru/articles/info/18.html

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson