2016-11-07 5 views
0
SELECT first_name, last_name, SUM(amount) 
FROM customer 
LEFT JOIN payment 
ON customer.customer_id=payment.amount 
ORDER BY amount DESC 
LIMIT 10; 

Я получаю сообщение об ошибке:Mysql ошибка функции SUM

#1140 - In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'sakila_tak14.customer.first_name'; this is incompatible with sql_mode=only_full_group_by

+3

Добавить в 'GROUP BY' пункт. – sagi

+1

Присоединение тоже подозрительно: payment.customer_id или такой я бы подумал. –

ответ

0

Вы сделали количество агрегата, так что вам нужно сгруппировать все без агрегатных полей. Попробуйте это:

SELECT first_name, last_name, SUM(amount) 
FROM customer LEFT JOIN payment 
ON customer.customer_id=payment.amount 
GROUP BY first_name, last_name 
ORDER BY amount DESC LIMIT 10; 
+1

'GROUP BY' должно быть до' ORDER BY'. – Wanderer

+0

@Ullas Спасибо. Я починил это. – MyiEye

1

V5.7.5 & до версии MySQL реализовать строже использование агрегатных функций & необобщенных столбцы не допускаются в выбранном списке & ORDER BY списка (или HAVING пункта). См: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

Также вы косяк заказ в колонке количество & не получите ожидаемый порядок (если взять параметр ONLY_FULL_GROUP_BY к ложному выбору) - как вы подвели его & результирующий столбец больше не будет называться количество - вам нужно для использования псевдонима.

Вам нужно будет либо группе первыми & фамилиями:

SELECT first_name, last_name, SUM(amount) summedammount 
FROM customer LEFT JOIN payment 
ON customer.customer_id=payment.amount 
GROUP BY first_name, last_name 
ORDER BY summedammount DESC 
LIMIT 10; 

установите переменную ONLY_FULL_GROUP_BY системы к ложным, или использовать функцию ANY_VALUE:

SELECT ANY_VALUE(first_name), ANY_VALUE(last_name), SUM(amount) summedammount 
FROM customer 
LEFT JOIN payment 
ON customer.customer_id=payment.amount 
ORDER BY summedammount DESC 
LIMIT 10; 
+0

Идентификация этой функции/изменение в 5.7.5 и выше полезно знать! Приятно видеть, что расширенное предложение Group By в более ранних версиях MySQL пересматривается. – xQbert