根据table2选择table1中列的总和? [复制]

Posted

技术标签:

【中文标题】根据table2选择table1中列的总和? [复制]【英文标题】:Selecting sum of a column in table1 based on table2? [duplicate] 【发布时间】:2017-09-21 15:32:22 【问题描述】:

我有两张表,employees 和 transactions,如下:

 employees: 
 EmployeeID
 firstname
 lastname

 transactions: 
 TransactionID
 employeeID
 amount

我如何获得所有名字为“John”的员工的总“金额”?谢谢!

 Select sum(amount) 
 from transactions 
 where employeeID = (everyone with first name John)

【问题讨论】:

阅读加入会给你更多的想法。通过它 学习 SQL 的基本概念,包括连接。这是最关键的部分之一,如果您需要询问这个问题却不知道该怎么做,那么您在尝试开始做事之前没有花足够的时间学习。 @ChetanVasudevan 嘿 Chetan。联接不会以任何方式改变表吗? @novice 不,他们没有。 @新手。不,我的意思是研究联接,因为它可以帮助您在相关的表之间连接并从中提取数据。 【参考方案1】:

INNER JOIN 应该可以解决问题。看看下面提供的查询:

SELECT SUM(T.amount) FROM
Transactions T INNER JOIN Employees E
ON T.EmployeeID = E.EmployeeID
WHERE E.FirstName = 'John'

【讨论】:

【参考方案2】:

你只需要做一个JOIN:

Select  Sum(T.Amount)
From    Transactions    T
Join    Employees       E   On  E.EmployeeId = T.EmployeeId
Where   E.FirstName = 'John'

【讨论】:

【参考方案3】:

尝试:

Select sum(amount)
from transactions
where employeeID 
   in (Select employeeID from employees 
       where firstname ='firstname');

谢谢 ;)

【讨论】:

【参考方案4】:

你快到了。试试:

SELECT SUM(amount) 
FROM transactions t
INNER JOIN employees e
    ON t.employeeID = e.employeeID
WHERE e.firstName = 'John'

或者,这也有效

SELECT SUM(amount) 
FROM transactions t
WHERE t.employeeId IN (
    SELECT employeeID
    FROM employees e
    WHERE e.firstName = 'John'
    )

【讨论】:

【参考方案5】:

这是我的猜测。您必须将两个表连接在一起,然后过滤您想要的数据。

SELECT     SUM(tr.amount)
FROM       Employees emp
INNER JOIN transactions tr ON emp.employeeId = tr.EmployeeId
WHERE      emp.FirstName = 'John'

【讨论】:

以上是关于根据table2选择table1中列的总和? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql查询选择table1的总和和table2的总和并减去它们

CASE 语句 SQL 中返回多列

如何根据不同的分组条件得到两个数量列的总和?

提取 table1.column2 的总和,其中 table1.column1 包含来自 table2.column2 的值

连接表SQL PHP中列的总和不起作用[重复]

Datagrid:计算页脚中列的平均值或总和