如何在 sql 中获取带分区的公共列的最大值

how to grab the max of common columns with partition in sql

我有这个 Table 筹码:

我正在寻找每个 ID 的最大值,但是 我使用的代码不正确我需要新的 table 成为

  select * 
  from
  (
     max (numchips) over (partition by Id)
     from @chips
  )

您可以使用 ROW_NUMBER:

 SELECT Id, numchips 
 FROM (
     SELECT Id, numchips, 
            ROW_NUMBER() OVER (PARTITION BY Id 
                               ORDER BY numchips DESC) as rn
     FROM @chips
  ) t
  WHERE rn = 1
对于每个 Id 分区中具有最高 numchips 值的记录,

rn 等于 1

仅当您在 Chips table 中有一些您还想检索的 附加 列时,使用 ROW_NUMBER() 才有意义。

为什么你不能做呢?:

SELECT 
   MAX(c.numchips), 
   c.Id 
FROM 
   @chips as c
GROUP BY 
   c.Id