微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 为什么我们需要GROUP BY与集合函数?

我看到一个例子,其中列出了一张名单(表)的雇员,他们各自的月薪.我做了一笔工资,在ouptput看到完全相同的表!这很奇怪

这是需要做的 – 我们必须找出我们本月支付的员工工资多少钱.为此,我们需要如图所示在数据库中总结其工资金额:

SELECT EmployeeID,SUM (MonthlySalary) 
FROM Employee
GROUP BY EmpID

我知道如果在上面的代码中不使用group by,我会收到一个错误.这是我不明白的 –

我们从雇员表中选择employeeid. SUM()被告知必须从Employee表中添加MonthlySalary列.所以,它应该直接去添加这些数字,而不是分组,然后添加它们.

这是一个人怎么做 – 看员工表,并添加所有的数字.为什么他会把麻烦分组,然后把它们加起来呢?

解决方法

为了解释,如果您将GROUP BY视为“for each”,可能会更容易.查询如下:
SELECT empid,SUM (MonthlySalary) 
FROM Employee
GROUP BY EmpID

在说:

“给我每个帝国的月薪的总和”

所以如果你的桌子看起来像这样:

+-----+------------+
|empid|MontlySalary|
+-----+------------+
|1    |200         |
+-----+------------+
|2    |300         |
+-----+------------+

结果:

+-+---+
|1|200|
+-+---+
|2|300|
+-+---+

总和似乎不会做任何事情,因为一个数字的总和是这个数字.另一方面,如果看起来像这样:

+-----+------------+
|empid|MontlySalary|
+-----+------------+
|1    |200         |
+-----+------------+
|1    |300         |
+-----+------------+
|2    |300         |
+-----+------------+

结果:

+-+---+
|1|500|
+-+---+
|2|300|
+-+---+

那么就是因为有两个empid 1相加在一起.不知道这个解释是否有所帮助,但我希望它能使事情变得更清楚一些.

原文地址:https://www.jb51.cc/mssql/81936.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐