#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 делают более одного заказа
, поэтому вам нужно сгруппировать их по идентификатору, чтобы каждая строка представляла общую сумму заказа для каждого продавца.
Я надеюсь, что этот ответ будет полезен для вас и решит вашу проблему.