必须出现在 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 的表和列 dobdoj 和日期。

这里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 子句中或者在聚合函数中”错误的可能原因之一

PostgreSQL GROUP BY LOWER() 不工作