Столбец должен отображаться в предложении GROUP BY или использоваться в агрегатной функции?

#sql

Вопрос:

введите описание изображения здесь

Вопрос в том, что мы хотим суммировать заказы, которые превышают 700 долларов.

Вот мой код до сих пор

 SELECT sum(t2.amount), t1.name 
FROM Salesperson t1
INNER JOIN Orders t2 ON t1.ID  =  t2. salesperson_id
WHERE t2.amount >= 700
 

Однако я получаю ошибку

Колонка «t1.name» должно отображаться в предложении GROUP BY или агрегатной функции

Это почему?

Комментарии:

1. добавить ГРУППУ ПО t1.name в конце концов, потому что любые неагрегированные данные должны быть добавлены в группу, это сделает их суммой всей суммы на каждое имя

2. Если вы использовали sum, вы должны указать, что суммировать. Например, вы указываете t1.name для суммирования будет добавлен столбец сумма строк с каждым идентификатором (1 ~ 6).

3. Большинству людей здесь нужны данные таблицы с образцами и ожидаемый результат в виде форматированного текста, а не в виде изображений.

4. Помог ли вам какой-либо из этих ответов? Если это так, подумайте о принятии одного из ответов, чтобы этот вопрос был решен 🙂

Ответ №1:

Вам необходимо указать поля, которые будут использоваться для агрегирования (группировки) результатов, в данном случае имя продавца.

 SELECT sum(t2.amount), t1.name 
FROM Salesperson t1
INNER JOIN Orders t2 ON t1.ID  =  t2.salesperson_id
WHERE t2.amount >= 700
GROUP BY t1.name
 

Ответ №2:

Если вы хотите просто суммировать сумму заказа, я думаю, что это сработает :

 SELECT sum(t2.amount), t1.name 
FROM Salesperson t1
INNER JOIN Orders t2 ON t1.ID  =  t2. salesperson_id
GROUP BY(salesperson_id)
HAVING t2.amount >= 700;
 

Ошибка из-за того, что некоторые salesperson_id делают более одного заказа
, поэтому вам нужно сгруппировать их по идентификатору, чтобы каждая строка представляла общую сумму заказа для каждого продавца.
Я надеюсь, что этот ответ будет полезен для вас и решит вашу проблему.