#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