0

I have this sample table:

id    branch    branch_running_no
1      1         5
2      1         10
3      2         5
4      2         10
5      3         5
6      3         10
7      4         5
8      4         10
9      5         5
10     5         10

Using this query, I can get the max branch_running_no for each branch column but I also want to include the column id of the max branch_running_no.

SELECT branch, MAX(branch_running_no) from table1 GROUP BY branch order by branch;

I was able to achieve:

branch    max
1         10
2         10
3         10
4         10
5         10

but i need:

id    branch    max
2     1         10
4     2         10
6     3         10
8     4         10
10    5         10
Vivek S.
  • 19,945
  • 7
  • 68
  • 85
Arnold Cristobal
  • 843
  • 2
  • 16
  • 36

2 Answers2

1
SELECT id
     ,branch
     ,branch_running_no
FROM (
    SELECT id
           ,branch
           ,branch_running_no
           ,row_number() OVER (PARTITION BY branch ORDER BY branch_running_no DESC) rn
    FROM t
    ) t
WHERE rn = 1

or

SELECT distinct on(branch) id,branch, MAX(branch_running_no) from t GROUP BY id,branch order by branch,3 desc;
Vivek S.
  • 19,945
  • 7
  • 68
  • 85
0

SELECT id,branch, MAX(branch_running_no) from table1 GROUP BY id,branch order by id,branch;

user1538020
  • 515
  • 1
  • 9
  • 25