【发布时间】:2020-06-02 15:57:10
【问题描述】:
我正在尝试计算具有公共 id 的列值的最大值。
我有下表作为输入
TABLE 1:
| id | seq | score |
| ----- | ------ | ----- |
| UA502 | qrst | 8.2 |
| UA502 | abcdef | 2.2 |
| UA504 | yzab | 8.8 |
| UA504 | lmnop | 2.8 |
| UA503 | uvwx | 8.6 |
| UA503 | ghijk | 2.6 |
想要的输出是:
| id | seq | score |
| ----- | ------ | ----- |
| UA502 | qrst | 8.2 |
| UA504 | yzab | 8.8 |
| UA503 | uvwx | 8.6 |
我在另一个 WITH 查询 (union_data; 表 1) 的输出上运行带有 groupby 和 max 函数的 WITH 查询 (max_calc)。
max_calc as(
select id, seq, max(score)
from union_data
GROUP BY id
)
select * from max_calc
;
我得到的错误是:
Query Error: error: column "union_data.seq" must appear in the GROUP BY clause or be used in an aggregate function
我不明白这个错误。我是根据 common id 而不是 seq 对数据进行分组的。为什么我应该在 GROUPBY 中包含列“union_data.seq”。
谢谢
【问题讨论】:
标签: sql postgresql group-by max greatest-n-per-group