Почему payment.customer_id не так? - PullRequest
0 голосов
/ 12 апреля 2020
SELECT customer.customer_id, first_name, last_name, SUM(amount)
FROM customer
INNER JOIN payment
ON customer.customer_id = payment.customer_id
GROUP BY customer.customer_id
ORDER BY customer.customer_id;

Этот запрос дает правильный ответ, но когда я пишу

SELECT payment.customer_id, first_name, last_name, SUM(amount)
FROM customer
INNER JOIN payment
ON customer.customer_id = payment.customer_id
GROUP BY payment.customer_id
ORDER BY customer.customer_id;

Он показывает ошибки.

1 Ответ

0 голосов
/ 12 апреля 2020

Полагаю, что customer_id является первичным ключом таблицы customer, и поэтому вы можете выбирать другие столбцы из таблицы customer при группировании по ней - см. https://www.postgresql.org/docs/current/sql-select.html#SQL -GROUPBY :

Когда присутствует GROUP BY или присутствуют какие-либо агрегатные функции, недопустимо, чтобы выражения списка SELECT ссылались на несгруппированные столбцы, кроме как внутри агрегатных функций или когда несгруппированный столбец функционально зависит от сгруппированных столбцов. , поскольку в противном случае было бы более одного возможного значения, которое нужно вернуть для несгруппированного столбца. Функциональная зависимость существует, если сгруппированные столбцы (или их подмножество) являются первичным ключом таблицы, содержащей несгруппированный столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...