2014-10-02 81 views
0

我正在做一个有关SQL查询的练习,并提出了一个错误,当谈到SUM。我知道什么是没有,但我有点得到一个错误......如何在SQL查询计数工作

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,真的不知道如何使用它..任何帮助将是伟大的!

+0

你想要的行数?客户总数*的总和?你从COUNT(b.Total)期待什么? – kums 2014-10-02 04:48:57

+0

我的腰椎疾病,我想总和,这是SUM和不算,但我仍然得到相同的错误 – user3342795 2014-10-02 16:50:33

回答

1

您还没有给出ClientBankBank表的结构。我正在你插入的记录是这样的:

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; 

如果只想为特定客户(使用他们的过滤名称比客户Id):

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; 
+0

通过修复问题,在组中添加姓和名,我现在感到很愚蠢!谢谢你的帮助:D – user3342795 2014-10-02 21:34:44