Проблема с запросом MySQL по группам по и максимуму - PullRequest
2 голосов
/ 14 июня 2010

Моя структура таблицы (id, кластер, qid, приоритет). Я пытаюсь выяснить, как я могу отобразить максимальное значение приоритета для каждого кластера. Скажем, кластер 1 имеет приоритеты 100, 102, 105. Я хочу отобразить запись, содержащую 105. Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 14 июня 2010

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

http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

2 голосов
/ 14 июня 2010

Вы можете отфильтровать строки с помощью внутреннего соединения, например:

select  s.*
from    structure s
join    (
        select  cluster, MAX(priority) maxprio
        from    structure 
        group by 
                cluster
        ) filter
on      s.cluster = filter.cluster
        and s.priority = filter.maxprio

Это вернет несколько строк, если все они имеют максимальный приоритет для этого кластера.

2 голосов
/ 14 июня 2010
select cluster, MAX(priority) from structure group by cluster;

Чтобы найти все столбцы TRY

select *  from structure
where priority = (
                select MAX(priority) from structure as s 
                where s.cluster = structure.cluster
              );
...