【问题标题】:how does count work in sql querycount 在 sql 查询中是如何工作的
【发布时间】:2014-10-02 03:41:42
【问题描述】:

我正在做一个关于 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,真的不知道如何使用它。任何帮助都会很棒!

【问题讨论】:

  • 你想要行数吗?一个客户的 total 总和?您对 COUNT(b.Total) 有何期待?
  • 我的道歉,我想总和,这是 SUM 而不是计数,但我仍然得到同样的错误

标签: qsqlquery


【解决方案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;

如果您只想针对特定客户(使用他们的名称而不是客户 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;

【讨论】:

  • 在组中添加姓氏和名字通过解决了这个问题,我现在觉得很愚蠢!感谢您的大力帮助:D
猜你喜欢
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多