【发布时间】:2012-10-30 19:21:21
【问题描述】:
我有一张桌子,上面有 id、year 和 count。
我想为每个id 获取MAX(count) 并在它发生时保留year,所以我进行了以下查询:
SELECT id, year, MAX(count)
FROM table
GROUP BY id;
不幸的是,它给了我一个错误:
错误:列“table.year”必须出现在 GROUP BY 子句中,否则 在聚合函数中使用
所以我试试:
SELECT id, year, MAX(count)
FROM table
GROUP BY id, year;
但是,它不会做MAX(count),它只是按原样显示表格。我想是因为当按year 和id 分组时,它会获得该特定年份的id 的最大值。
那么,我该如何编写该查询?我想得到id´s MAX(count) 以及发生这种情况的年份。
【问题讨论】:
-
如果 {id,year} 是唯一的,
max(thing)与thing相同。另请注意,“计数”是一个关键字,(在某些方言中,年份也是如此,IIRC) -
您希望每个 id 获得哪一年?没有“年”,有不止一个,也许你想要
MAX(year)? -
是的,它们是独一无二的,所以我明白了。我想获得 ids MAX(thing) 并且还想看看发生在哪一年。 (我的代码中没有写计数,只是一个例子)
-
我想得到那个 ID 最大化“事物”列的年份
标签: sql postgresql group-by max greatest-n-per-group