sql - Postgres:在我使用聚合函数时必须出现在 GROUP BY
问题描述
当我如下运行 sql 时,我收到以下错误消息:
列
subQuery.numbers
必须出现在GROUP BY
子句中或在聚合函数中使用**"
我不明白为什么在使用聚合函数和别名时会出现此sum
错误。count
left join
我认为父查询无法识别带有别名(“subQuery”)的子查询。
我正在尝试找到解决方案,但我没有找到像我这样的其他案例。您能否解释一下为什么在使用聚合函数时会出现此错误?
select to_char(customer1.date_time, 'MM-dd') as DateTime,
(case when subQuery.numbers is null then 0 else subQuery.numbers end) as "2019-numbers",
(case when subQuery.amount is null then 0 else subQuery.amount end) as "2019-amount"
from customer_table customer1
left join (
select to_char(customer2.date_time, 'MM-dd') as DateTime,
count(*) as numbers,
sum(amount) as amount
from customer_table customer2
where customer2.date_time > date_trunc('day', (now() - interval '1 day') - interval '1 year')
and customer2.date_time < date_trunc('day', now() - interval '1 year')
and customer2.status = 'OK'
group by to_char(customer2.date_time, 'MM-dd')) as subQuery on subQuery.DateTime = to_char(customer1.date_time, 'MM-dd')
where customer1.date_time > date_trunc('day', now() - interval '1 day')
and customer1.date_time < current_date - interval '1 day' + time '23:59'
group by to_char(customer1.date_time, 'MM-dd');
解决方案
只需将subQuery.numbers
and subQuery.amount
(它们出现在SELECT
列表中)添加到GROUP BY
子句中。
否则,应该使用subQuery.numbers
属于一个的几个中的哪一个?to_char(customer1.date_time, 'MM-dd')
推荐阅读
- maven - 在 pom.xml 的这一行找到多个注释
- r - 用协方差 cressie 建模高斯随机场
- python - 盈透证券断管python连接失败
- css - 带有 ngFor 的 Angular 7 flexbox
- android - 来自Android应用程序的cakephp JWT身份验证的令牌值应该是多少?
- python - Python 3:如何添加
html中所有img标签之前和之后
- php - 如何从数据库中解码 ACF 存储的数据
- ios - didReceiveRemoteNotification 仅适用于后台情况很短的时间,然后停止工作
- java - 两个 Thrift 服务器如何相互通信?
- javascript - 为 Facebook 登录按钮提供 Typescript 回调方法