SELECT *
FROM (
SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY name ORDER BY val DESC ) rid
FROM tb
) AS t
WHERE rid = 1
SELECT *
FROM (
SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY name ORDER BY val DESC ) rid
FROM tb
) AS t
WHERE rid = 1