2017-02-06 1 views
0

SQL에서 이처럼 출력을 얻으려면 어떻게해야합니까? 나는 그룹별로 해봤지만 몇 달을주지 않고있다. 쉬운 방법이있다.sql - 범주에서 최대 값을 찾는 방법

select * from t1 order by 1,2 ; 
id | month | amnt 
----+-------+------ 
    1 | feb | 50 
    1 | jan | 20 
    2 | apr | 30 
    2 | feb | 50 
    2 | jan | 30 
    2 | mar | 70 
(6 rows) 

Output 
========= 

id | month | amnt 
----+-------+------ 
    1 | feb | 50 
    2 | mar | 70 
+2

이 있다면? –

+0

시도한 SQL 표시 –

+1

어떤 DBMS를 사용하고 있습니까? ('SQL Server'''''''''''''''''''''> 다른 것 .........) – Siyual

답변

1

당신이 윈도우 함수

Select Top 1 with ties * 
From YourTable 
Order By Row_Number() over (Partition By id order by amnt desc) 

반환 당신이 사용하고있는 DBMS

id month amnt 
2 mar  70 
1 feb  50 
+0

이 구문 +1 –

+0

@DuduMarkovitz 미소를 가져 주셔서 감사합니다 :) –

+0

나는 아래의 SQL을 시도해 보았습니다. t1에서 (선택 ID, max (amnt) mamt를 선택하십시오.)을 선택하십시오. group by 1) b a.id = b.id 및 a.amnt = b.mamt;'그러나 "타이"에 대한 일반 sql을 작성하는 방법에 대한 문제점으로 인해 일부 창을 찾아야 할 필요가 있습니다 이 함수를 작성하려고하는 SQL 제품이 무엇이든간에 작동합니다. –