postgresql group by and inner join

group-by, inner-join, postgresql, sql

Solution

First, `GROUP BY` comes at the end of the query (just before `order by` or `having` clauses if you have some).

Then, all fields in the select which are not in an aggregation function must be in the group by clause.

so

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

But customers with same first_name will be grouped, which is probably not really what you want.

so rather

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

Problem

I want a query in SQL which does `INNER JOIN` and `GROUP BY` at the same time. I tried the following which doesn't work: ``` SELECT customer.first_name, SUM(payment.amount) FROM customer GROUP BY customer.customer_id INNER JOIN payment ON payment.customer_id = customer.customer_id; ``` Thank you in advance!

Original source

Related problems