/ / Wybierz max każdej grupy rekordów według nazwy - sql-server, tsql

Wybierz max każdej grupy rekordów według nazwy - sql-server, tsql

Mam tabelę z kilkoma kolumnami:

Name  Price    Date   ...
a     100      .....
b     110      .....
c     90       .....
a     130      .....
b     60       .....
d     200      .....
c     5        .....

Chcę napisać zapytanie, które da mi maksymalną cenę każdego imienia:

a   130     .....
b   110     .....
c   90      .....
d   200     .....

Odpowiedzi:

1 dla odpowiedzi № 1

Spróbuj tego:

SELECT  *
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Name
ORDER BY Name ASC, Price DESC) AS RN
FROM  Table
) AS T
WHERE   RN = 1

0 dla odpowiedzi nr 2

Użyj tego

SELECT tbl1.* FROM table_1 tbl1 INNER JOIN(
SELECT name,MAX(price) price FROM table_1 GROUP BY name) tbl2
ON tbl1.name = tbl2.name AND tbl1.price = tbl2.price

kod zreformowany;)


0 dla odpowiedzi № 3
;with cte as(
select
rn = row_number() over(partition by Name order by Price desc),
*
from <table name>
)
select
<columns>
from cte
where rn = 1

-1 dla odpowiedzi № 4
select Name, Price, Date from (select max(Price)as p, Name as n from TableName
group by Name) as A
inner join
(select * from from TableName where A.p=price and A.n=Name) as B

Spróbuj tego.