Режим only_full_group_by включен.
Мой запрос заключается в объединении таблиц из 2 таблиц. Если я просто извлекаю данные, используя нижеприведенный запрос, он работает правильно и показывает мне правильные записи:
select p.product_category, m.profit
from market_fact m inner join
prod_dimen p
on m.prod_id = p.prod_id;'
но если я использую группу по порядку по Profit desc, используя ниже, это не дает. записей исправляет их одно и то же - но не дает правильного порядка и и даже значения прибыли не одинаковы
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. Выражение №2 списка SELECT не находится в предложении GROUP BY и содержит неагрегированный столбец "superstoresdb.m.Profit", который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by
Как подойти к этому?
Вам нужно предоставить расчет агрегации (например, SUM, AVG, MAX, MIN) в m.profit, иначе SQL будет думать, что вы хотите GROUP BY.
Поэтому, если вы хотите увидеть категории продуктов по общей прибыли, попробуйте код ниже:
select p.product_category, SUM(m.profit) as profit
from market_fact m inner join
prod_dimen p
on m.prod_id = p.prod_id
group by p.product_Category
order by SUM(m.profit) desc;
Если вы не хотите делать вычисления агрегации и просто хотите удалить дубликаты, вам лучше использовать предложение SELECT DISTINCT, а не GROUP BY:
select distinct 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;