我有一张表,叫做'makerar',它长这样:
cname | wmname | avg |
---|---|---|
canada | zoro | 2.0000000000000000 |
spain | luffy | 1.00000000000000000000 |
spain | usopp | 5.0000000000000000 |
我想要选择每个cname的最大平均值。
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
但是我会收到一个错误信息,
ERROR: column "makerar.wmname" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
所以我这样做。
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname, wmname;
然而,这将不会得到预期的结果,并显示了下面的错误输出。
cname | wmname | max |
---|---|---|
canada | zoro | 2.0000000000000000 |
spain | luffy | 1.00000000000000000000 |
spain | usopp | 5.0000000000000000 |
实际上应该显示如下结果:
cname | wmname | max |
---|---|---|
canada | zoro | 2.0000000000000000 |
spain | usopp | 5.0000000000000000 |
我该如何解决这个问题?
注意:此表格是从先前操作创建的视图。
wmname="usopp"
而不是例如wmname="luffy"
? - AndreKR(西班牙,路飞)
的avg
与(西班牙,乌索普)
相同,那么你需要指定预期的行为是什么... 随机选择一个?使用其他列作为“决胜者”? - Ricardo