Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск строки с максимальным значением поля в группе.Как? / 9 сообщений из 9, страница 1 из 1
24.09.2005, 22:44:52
    #33287241
vitalb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
Есть строки с полями id (primary key), _group, value. Нужно найти id строк с максимальными значениями поля value в каждой группе group. Запрос типа SELECT id, MAX(value) FROM mytable GROUP BY _group требуемого результата не дает, поскольку id возвращается не строки, содержащей максимальное значение value, а первой строки в группе group.
Извращения типа SELECT id, MAX(value) as mv FROM mytable GROUP BY _group HAVING value=mv не работают.

Можно как то все решить одним запросом. мускуль 3.23 таблицы типа MyISAM
...
Рейтинг: 0 / 0
25.09.2005, 03:00:55
    #33287308
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
Для версии <4.0 нерешабельно.
...
Рейтинг: 0 / 0
27.09.2005, 12:24:15
    #33290440
Divog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
SELECT id, value FROM mytable GROUP BY _group ORDER BY value DESC
А так?
...
Рейтинг: 0 / 0
14.10.2005, 11:53:03
    #33324590
lizendir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
А как это сделать в MySQL 4.1.11?
...
Рейтинг: 0 / 0
14.10.2005, 12:54:19
    #33324854
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
lizendirА как это сделать в MySQL 4.1.11?Навскидку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT t1.id, t1.value
  FROM tablename t1
 WHERE t1.id=(  SELECT t2.id
                  FROM tablename t2
	         WHERE t2.group=t1.group
              ORDER BY t2.value DESC
                 LIMIT  0 , 1 )
...
Рейтинг: 0 / 0
14.10.2005, 13:03:12
    #33324894
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
JohnmenДля версии <4.0 нерешабельно.А если создать временную таблицу и потом выполнить LEFT JOIN?

Что-то вроде этого (не проверял):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TEMPORARY TABLE tmp_t2
AS
   SELECT MAX(value) max_value, my_group
     FROM tablename
 GROUP BY my_group;

SELECT t1.id, t1.value
  FROM tmp_t2 LEFT JOIN tablename t1
    ON tmp_t2.max_value=t1.value AND tmp_t2.my_group=t1.my_group
...
Рейтинг: 0 / 0
14.10.2005, 20:25:15
    #33326130
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
Код: plaintext
1.
2.
set @ch= 0 ; @gr= 0 ;
select id, @ch:=if(@gr=grp, 0 , 1 ) as maxx, @gr=grp from mytable
order by grp,value desc having maxx= 1 ;
http://dev.mysql.com/doc/refman/5.0/en/variables.html
You might get the results you expect, but this is not guaranteed.

Ну и разумеется можно убрать having, а на клиенте профильтровать по полю maxx.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
17.10.2005, 17:16:31
    #33328749
Steven13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
JohnmenДля версии <4.0 нерешабельно.

Решаемо!!!!

Код: plaintext
SELECT right(MAX(value+id* 0 . 00000000001 ), 5 ) as mv FROM mytable GROUP BY _group


Это если розрядность ИД до 5 розрядов, и точность значений до 5 знаков после комы.
Я проверил у себя (правда на 5.07) работает.
...
Рейтинг: 0 / 0
19.10.2005, 15:49:28
    #33333412
Steven13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки с максимальным значением поля в группе.Как?
Код: plaintext
SELECT _group, right(MAX(value+id* 0 . 00000000001 ), 5 ) as mv, MAX(value) FROM mytable GROUP BY _group

В таком варианте, мы получим
Група, ИД максимального значения, само максимальное значение.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск строки с максимальным значением поля в группе.Как? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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