我看到一个例子,其中有一个员工列表(表)及其各自的月薪。我对工资进行了汇总,并在输出中看到了完全相同的表格。这很奇怪。
这是必须做的 - 我们必须找出本月我们支付多少员工工资。为此,我们需要在数据库中对他们的工资金额进行求和,如下所示:
SELECT EmployeeID, SUM (MonthlySalary)
FROM Employee
GROUP BY EmpID
我知道如果我不使用就会出错GROUP BY
在上面的代码中。这是我不明白的地方。
我们从 Employee 表中选择 EmployeeID。SUM()
被告知必须从 Employee 表中添加 MonthlySalary 列。因此,它应该直接将这些数字相加,而不是将它们分组然后相加。
这就是一个人会做的事情 - 查看员工表并将所有数字相加。他们为什么要费劲把它们分组然后加起来呢?
为了便于解释,如果您将 GROUP BY 视为“对于每个”,可能会更容易。查询如下:
SELECT empid, SUM (MonthlySalary)
FROM Employee
GROUP BY EmpID
是说:
“给我每月工资的总和for each empid"
因此,如果您的表格如下所示:
+-----+------------+
|empid|MontlySalary|
+-----+------------+
|1 |200 |
+-----+------------+
|2 |300 |
+-----+------------+
result:
+-+---+
|1|200|
+-+---+
|2|300|
+-+---+
Sum 似乎不会执行任何操作,因为一个数字的总和就是该数字。另一方面,如果它看起来像这样:
+-----+------------+
|empid|MontlySalary|
+-----+------------+
|1 |200 |
+-----+------------+
|1 |300 |
+-----+------------+
|2 |300 |
+-----+------------+
result:
+-+---+
|1|500|
+-+---+
|2|300|
+-+---+
那么会是因为有两个 empid 1 需要相加。不确定这个解释是否有帮助,但我希望它能让事情变得更清楚一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)