ОБЪЕДИНЕНИЕ и СУММИРОВАНИЕ в MySQL?

#mysql #sql #sum #inner-join #aggregate-functions

#mysql #sql #сумма #внутреннее соединение #агрегатные функции

Вопрос:

Я новичок в MySQL в целом, поэтому у меня есть основной вопрос. Итак, у меня есть эти две таблицы

 CREATE TABLE customer (
id SMALLINT UNSIGNED NOT NULL auto_increment,
name VARCHAR(255) CHARACTER SET latin1 NOT NULL,
birthdate DATE NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE account (
id SMALLINT UNSIGNED NOT NULL auto_increment,
balance DECIMAL(7,2) NOT NULL DEFAULT 0.0,
ownedBy SMALLINT UNSIGNED NOT NULL,
nickname VARCHAR(255) CHARACTER SET latin1 DEFAULT NULL , 
PRIMARY KEY (id),
FOREIGN KEY (ownedBy) REFERENCES customer(id) ON UPDATE CASCADE ON DELETE CASCADE
);
 

Я хочу иметь возможность получить всех клиентов, у которых есть учетная запись, и общую сумму на ВСЕХ их банковских счетах, но я, честно говоря, не понимаю, как это сделать правильно. Я дошел до

 SELECT customer.name FROM customer JOIN account ON customer.id = account.id;
 

Ответ №1:

Во-первых, начиная с вашего существующего запроса, вам необходимо исправить условие соединения: таблица account относится к customer сквозному столбцу ownedby , а не id . Затем вы можете агрегировать и суммировать:

 select c.name, sum(a.balance) as total_balance
from customer c
inner join account a on a.ownedby = c.id
group by c.id