gpt4 book ai didi

mysql - 必须出现在 GROUP BY 子句中或用于聚合函数 (PostgreSQL)

转载 作者:行者123 更新时间:2023-11-29 04:20:01 26 4
gpt4 key购买 nike

我有这样的查询:

select u.fullname ,s.schedate,
sum(case when s.isvisiting =1 then s.isvisiting else 0 end) as visit ,
count(s.custid) as cust,
sum(case when s.isclosing = 1 then s.isclosing else 0 end)as orders
from vmstrschedule s JOIN vmsmsuser u ON u.usercode = s.salesmanid
where u.branchid = 'BLL' group by u.fullname

但是它显示这样的错误:

must appear in the GROUP BY clause or be used in an aggregate function

它在 MySQL 中有效,但当我在 PostgreSQL 中尝试时它不起作用。我想每月显示这样的数据:

enter image description here

但是如果我使用这个查询:

select u.fullname,s.schedate,
sum(case when s.isvisiting =1 then s.isvisiting else 0 end) as visit ,
count(s.custid) as cust,
sum(case when s.isclosing = 1 then s.isclosing else 0 end)as orders
from vmstrschedule s JOIN vmsmsuser u ON u.usercode = s.salesmanid
where u.branchid = 'BLL' group by u.fullname,s.schedate
order by u.fullname

它将显示如下数据:

enter image description here

最佳答案

如果您所说的“有效”是指它为每个组任意选择一个可能的 schedate 值,那么您是正确的。但是,postgresql 和大多数其他 SQL 产品希望您明确他们应该选择什么值

如果每个组中的所有值都相同,则将其放入 GROUP BY 子句或任意聚合(例如 MAX(s.schedate))应该工作。如果值不同,请告诉服务器应该选择哪一个 - MINMAX 通常是合适的。

关于mysql - 必须出现在 GROUP BY 子句中或用于聚合函数 (PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27165110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com