必须出现在 postgresql 的 GROUP BY 子句中
Posted
技术标签:
【中文标题】必须出现在 postgresql 的 GROUP BY 子句中【英文标题】:must appear in the GROUP BY clause in postgresql 【发布时间】:2016-04-03 01:34:17 【问题描述】:我收到此错误:
错误:列“programmer.pname”必须出现在 GROUP BY 子句中或用于聚合函数中 第 1 行:从程序员那里选择 pname, min(age(doj)) ;
我有一个名为 programmer
的表和列 dob
、doj
和日期。
这里doj
是加入日期。
我想找到所有程序员中经验最少的程序员。
这是我的尝试:
SELECT pname, min(age(doj)) FROM programmer;
我得到了上述错误。
programmer.pname
是什么?上面的正确查询是什么?
【问题讨论】:
你应该使用group by来找到所有程序员中经验最少的程序员select pname, min(age(doj)) from programmer group by pname ;
sql-group by
***.com/…
【参考方案1】:
GROUP BY
语句与聚合函数结合使用,将结果集按一列或多列分组。
select pname, min(age(doj))
from programmer
group by pname
寻找所有程序员中经验最少的程序员
select pname
,min(age(doj)) mindoj
from programmer
group by pname
order by mindoj limit 1
或
select pname,doj
from programmer
order by doj limit 1
在这种情况下,您可能有多个最低经验的程序员(具有相同最低经验的程序员)
select pname,doj
from programmer
where doj=(select min(doj) from programmer)
programmer.pname 是什么,正确的查询是什么? 上面?
程序员.pname = 表名.列名强>
【讨论】:
那行得通。但如果我有很多行,也会显示这些行。我的目标是展示一位也是唯一一位经验最少的程序员。 @zeewagon 如果我理解正确,请尝试select pname, min(age(doj)) mindoj from programmer group by pname order by mindoj limit 1
@zeewagon 也试试这个select pname from programmer order by doj limit 1
以上是关于必须出现在 postgresql 的 GROUP BY 子句中的主要内容,如果未能解决你的问题,请参考以下文章
Postgresql 错误:列必须出现在 GROUP BY 子句中或在聚合函数中使用
Django 与 Postgresql,列必须出现在 GROUP BY 子句中或在聚合函数中使用
Postgresql“列必须出现在 GROUP BY 子句中或在聚合函数中使用”和唯一字段
Postgresql 9.2 错误与 group by 未出现在 postgresql 12 中
postgreSQL使用sql归一化数据表的某列,以及出现“字段 ‘xxx’ 必须出现在 GROUP BY 子句中或者在聚合函数中”错误的可能原因之一