仅启用“完全”组“按模式”。
我的查询是关于两个表的表连接的-如果我只是使用下面的查询获取数据-它工作正常,并显示正确的记录:
select p.product_category, m.profit
from market_fact m inner join
prod_dimen p
on m.prod_id = p.prod_id;`
但是如果我使用下面的groupbyorderbyprofictdescusing,它会给出正确的记录数,但是没有给出正确的顺序,甚至利润值也不相同
select p.product_category, m.profit
from market_fact m inner join
prod_dimen p
on m.prod_id = p.prod_id
order by m.Profit desc;
如果我使用按产品类别分组和按利润排序-
select p.product_category, m.profit
from market_fact m inner join
prod_dimen p
on m.prod_id = p.prod_id
group by p.Product_Category
order by m.Profit desc;
然后-抛出错误:错误代码:1055。select list的表达式#2不在group by子句中,并且包含未聚合列“superstoresdb.m.profit”,该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容
如何处理这个问题?
1条答案
按热度按时间mm5n2pyu1#
您需要向m.profit提供一个聚合计算(例如sum、avg、max、min),否则sql会认为您需要按它分组。
因此,如果您想按总利润查看产品类别,请尝试以下代码:
如果不想进行聚合计算,只想删除重复项,最好使用select distinct子句,而不是group by: