С MAX()
оконной функцией:
SELECT t.*,
MAX(t.sal) OVER (PARTITION BY t.Dname) max_sal
FROM tablename t
Если ваша база данных не поддерживает оконные функции:
SELECT t.*, d.max_sal
FROM tablename t INNER JOIN (
SELECT Dname, MAX(sal) max_sal
FROM tablename
GROUP BY Dname
) d ON d.Dname = t.Dname
См. Демонстрационную версию . Результаты:
> eid | ename | dname | sal | max_sal
> --: | :---- | :---- | --: | ------:
> 1 | a | d1 | 100 | 500
> 2 | b | d1 | 500 | 500
> 3 | c | d2 | 600 | 600
> 4 | e | d3 | 700 | 700