错误代码:1055order by子句的表达式#1不在group by子句中,并且包含未聚合的列

x4shl7ld  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(412)
select c.Cust_id, Customer_Name, round(sum(Sales)) as Total_Sales
  from market_fact_full m
 inner join cust_dimen c using (Cust_id)
 group by c.Cust_id
 order by Sales desc;

另外,当我添加所有非聚合列时,仍然会得到错误:

select c.Cust_id, Customer_Name, round(sum(Sales)) as Total_Sales
  from market_fact_full m
 inner join cust_dimen c using (Cust_id)
 group by c.Cust_id, Customer_Name
 order by Sales desc;

错误代码:1055。order by子句的表达式#1不在group by子句中,并且包含未聚合的列'market_star_schema.m.sales',该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容

ukxgm1gy

ukxgm1gy1#

那是因为你想 order bysales -但由于您是按客户分组的,因此有多个 sales 所以数据库不能很好地判断它应该做什么。
大概,您希望按客户的总销售额来订购。为此,可以参考中定义的别名 from 条款:

select c.cust_id, c.customer_name, round(sum(m.sales)) as total_sales 
from market_fact_full m 
inner join cust_dimen c using (Cust_id) 
group by c.cust_id, c.customer_name 
order by total_sales desc;

相关问题