Получить максимальное значение строк из таблицы базы данных - PullRequest
1 голос
/ 29 октября 2009

Мне нужно написать запрос SQL, который получит те строки из таблицы, которые имеют максимальное значение файлов.

Таблица базы данных выглядит следующим образом:

> ID  status dept  files
> 
> > 1   1   23  1256637314
> > 
> > 1   1   39  1256642968
> > 
> > 2   0   85  1256551419
> > 
> > 2   1   90  1256642968
> > 
> > 2   1   93  1256810937
> > 
> > 3   0   20  1256642968
> > 
> > 5   1   342 1256810937

Теперь из этой таблицы я хочу получить те строки, которые имеют максимальную группировку файлов по ID:

> ID  status dept  files
>
> 1    1   39  1256642968
>
> 2    1   93  1256810937
>
> 3    0   20  1256642968
>
> 5    1   342 1256810937

Есть предложения ??

Спасибо.

я пробовал это, но это не правильно

Select  ID, Status, dept,files
from SLAStat
where files in (Select Max(files) from SLAStat group by ID)




2   1   90  1256642968
1   1   39  1256642968
3   0   20  1256642968
5   1   342 1256810937
2   1   93  1256810937

Ответы [ 4 ]

4 голосов
/ 29 октября 2009

Замените @ t1 на вашу таблицу:

With idT as (
    select ID
    from @t1
    group by id
) 
select applyT.* 
from idT p
CROSS APPLY (
    select top 1 * from @t1 where ID=p.ID order by files desc
) as applyT
2 голосов
/ 29 октября 2009
SELECT DISTINCT a.ID, a.Status, a.Dept, a.Files
FROM table a
INNER JOIN (
SELECT ID, MAX(files) AS Files
FROM table
GROUP BY ID) b ON a.ID = b.ID AND a.Files = b.Files
0 голосов
/ 29 октября 2009

Возможно, я слишком упрощаю проблему, но:

select top 5 * from SLAStat order by files desc;
0 голосов
/ 29 октября 2009
SELECT MAX(files) as max_files, id, status, dept
FROM table
GROUP BY id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...