как работает count в sql запросе

Я делаю упражнение по SQL-запросу и обнаружил ошибку, когда дело доходит до SUM. Я знаю, что это делает, но почему-то получаю сообщение об ошибке...

select 
    client.LName, client.FName, 
    COUNT(b.Total) 
from 
    ClientBank client 
INNER JOIN 
    Bank b ON (client.ClientID = b.ClientID) 
where
    client.LName = 'name' AND client.FName = 'a';

Но потом я получаю эту ошибку...

Столбец «ClientBank.LName» недействителен в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.

Я пытался сделать Group BY, но не знаю, как правильно ее использовать. Любая помощь была бы здоровой!


person user3342795    schedule 02.10.2014    source источник
comment
Вы хотите количество строк? сумма итого для клиента? Чего вы ожидаете от COUNT(b.Total)?   -  person kums    schedule 02.10.2014
comment
Приношу свои извинения, я хочу суммировать итог, который является СУММОЙ, а не подсчитывается, но я все равно получаю ту же ошибку.   -  person user3342795    schedule 02.10.2014


Ответы (1)


Вы не указали структуру таблиц ClientBank и Bank. Я так понимаю, что вы вставили записи примерно так:

INSERT INTO `ClientBank`
 (`ClientID`, `FName`, `Lname`)
VALUES 
    (1, 'Abraham', 'Backman'),
    (2, 'Carl',    'Dacosta'),
    (3, 'Erwin',   'Fabio'),
    (4, 'Gabriel', 'Haddon');

INSERT INTO `Bank`
 (`DepositID`, `ClientID`, `Deposit`)
VALUES
    (1, 1, 100),
    (2, 2, 200),
    (3, 3, 300),
    (4, 4, 400),
    (5, 2, 500),
    (6, 3, 600);

Вы можете получить общую сумму депозита для каждого клиента следующим образом:

SELECT
    client.LName, client.FName, SUM(b.Deposit) as Total
FROM
    ClientBank client 
INNER JOIN 
    Bank b ON (client.ClientID = b.ClientID) 
GROUP By
    client.LName, client.FName;

Если вы хотите только для определенного клиента (фильтрация по имени, а не по идентификатору клиента):

SELECT
    client.LName, client.FName, SUM(b.Deposit) as Total
FROM
    ClientBank client 
INNER JOIN 
    Bank b ON (client.ClientID = b.ClientID) 
WHERE
    client.LName = 'Fabio' AND client.FName = 'Erwin'
GROUP By
    client.LName, client.FName;
person kums    schedule 02.10.2014
comment
Добавив фамилию и имя в группу, я решил проблему, теперь я чувствую себя таким глупым! Спасибо за большую помощь :D - person user3342795; 03.10.2014