Код ошибки: 1055. Выражение № 1 предложения ORDER BY отсутствует в предложении GROUP BY и содержит неагрегированный столбец - PullRequest
1 голос
/ 20 июня 2020
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. Выражение № 1 предложения ORDER BY не входит в предложение GROUP BY и содержит неагрегированный столбец market_star_schema.m.Sales, который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by

1 Ответ

0 голосов
/ 20 июня 2020

Это потому, что вы пытаетесь order by столбец sales - но поскольку вы группируете по клиентам, в каждой группе есть несколько 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...