为什么我们需要带有聚合函数的 GROUP BY?

2024-04-30

我看到一个例子,其中有一个员工列表(表)及其各自的月薪。我对工资进行了汇总,并在输出中看到了完全相同的表格。这很奇怪。

这是必须做的 - 我们必须找出本月我们支付多少员工工资。为此,我们需要在数据库中对他们的工资金额进行求和,如下所示:

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(使用前将#替换为@)

为什么我们需要带有聚合函数的 GROUP BY? 的相关文章

  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 每行中非空列的计数

    我有一个包含 4 列的表 在第 5 列中我想存储前 4 列中有多少个非空列的计数 例如 其中 X 是任意值 Column1 Column2 Column3 Column4 Count X X NULL X 3 NULL NULL X X 2
  • MySQL 最佳实践:SELECT 子递归尽可能提高性能?

    我想选择一个根项目及其子项 使其性能尽可能高 我更喜欢使用嵌套集模型 但这次表结构遵循邻接模型 有关嵌套集和邻接模型的更多信息 http mikehillyer com articles managing hierarchical data
  • 验证 sql/oracle 中的电子邮件/邮政编码字段

    对于以下方面的一些建议将不胜感激 是否可以通过 oracle 中的 sql 中的某种检查约束来验证电子邮件和邮政编码字段 或者我怀疑 pl sql 带有正则表达式的这种事情 Thanks 这是电子邮件地址的正则表达式语法 包括引号 a zA
  • 如何从 MySQL 中的布尔类型返回不同的字符串?

    如果我在 MySql 中将一列设置为布尔值 则查询将返回以下值 0 or 1 是否可以做这样的事情 SELECT bool value AS yes OR no 我的意思是 根据真假返回两个不同的字符串 SELECT CASE WHEN b
  • Postgresql 串行错误自动增量

    我在 postgresql 上遇到问题 我认为 postgresql 中有一个错误 我错误地实现了一些东西 有一个表包括colmn1 primary key colmn2 unique colmn3 插入一行后 如果我尝试使用现有的另一次插
  • Oracle如何将UTC时间转换为本地时间(缺少偏移信息)

    我有一个包含日期列的表 我认为该列中的日期是以 UTC 格式保存的 我希望检索日期时以当地时间打印 这意味着当我从德国调用日期时 结果应该是这样的 2015 04 29 11 24 06 0200UTC EUROPE BERLIN 我尝试了
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • nvarchar 值“3001822585”的转换溢出了 int 列

    我使用以下方法将 Excel 文件导入到 SQL Server Excel 文件将所有值作为字符串 我可以导入文件 除了Barcode SalePrice and Price2 我收到错误 nvarchar 值 3001822585 条形码
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • PostgreSQL 在递归查询中找到所有可能的组合(排列)

    输入是一个长度为 n 的数组 我需要生成数组元素的所有可能组合 包括输入数组中元素较少的所有组合 IN j A B C OUT k A AB AC ABC ACB B BA BC BAC BCA 随着重复 所以AB BA 我尝试过这样的事情
  • SQL Server 2012:有条件地增加计数器用户 ROW_NUMBER()

    我正在尝试申请ROW NUMBER 根据特定条件增加计数器 我的数据如下所示 目标计数器是Prep column id DSR PrepIndicator Prep 1662835 1 1 1 1662835 14 2 2 1662835
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 使用 .NET 中的类型化数据集将 SQL 参数传递给 IN() 子句

    首先道歉 因为该网站上有类似的问题 但没有一个直接回答这个问题 我在 VS 2010 中使用类型化数据集 我在数据集中创建一个 TableAdapter 查询如下 SELECT from Table WHERE ID IN IDs 现在如果
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER

随机推荐

  • 如何将 C# 6 与网站项目类型一起使用?

    更新了现有的Web Site项目类型Visual Studio 2015 我将Framework更改为4 6 然后我希望在我的代码隐藏文件中可以使用所有这些新功能 不幸的是我收到如下错误 错误 CS8026 功能 表达式主体属性 在 C 5
  • 与 pandas 的时间序列相关性

    我有一些颗粒物传感器和 CSV 其时间序列如下 传感器A date value date 2017 11 30 00 00 00 30 11 17 0 00 49 2017 11 30 00 02 00 30 11 17 0 02 51 2
  • 多行 JTable 单元格在编辑期间不是多行的

    我正在开发一个应用程序 它有一个需要多行单元格的 JTable 因此 我扩展了 JTextArea 一切都显示出来了 但是当我尝试编辑单元格时 文本显示为单行 编辑后变为多行 我希望文本在编辑过程中保持多行 有没有办法做到这一点 创建您的表
  • Jquery 文件上传 - $_FILES 数组为空

    使用 Jquery 文件上传 它正在 工作 并上传图像并显示拇指 但是 当我在处理程序中提交表单时 如果我转储 FILES 则那里什么也没有 我基本上使用的是 Basic Plus 示例 并将 autoUpload 设置为 false 我希
  • 日期获取自定义周开始日的周数

    如果我有自定义周开始日而不是星期一 应该如何更改 Date 类的 getWeekNumber 原型 当前查找 ISO 周数的代码 Date prototype getWeekNumber function Create a copy of
  • Mono.Cecil 类似 Type.GetInterfaceMap 之类的东西吗?

    系统 反射 类型包含获取接口映射 http msdn microsoft com en us library system type getinterfacemap aspx这有助于确定哪些方法从接口实现某些方法 Does 莫诺 塞西尔包含
  • 检测空 UITextField 中的退格键

    Is there any way to detect when the Backspace Delete key is pressed in the iPhone keyboard on a UITextField that is empt
  • 如何将嵌套的 javascript 对象转换为仅第一级属性对象?

    我有以下对象inputObj我想将其转换为一个简单的对象 例如outputObj var inputObj a 1 b true c string1 d e string2 f false g 5 h i 7 j string3 k nam
  • 无法实例化类:org.jnp.interfaces.NamingContextFactory

    这是我的代码 扬声器远程 java package test import javax ejb Remote Remote public interface SpeakerRemote String sayAPhrase String ph
  • VueJS 将类切换到表中的特定元素

    我似乎不知道如何在表中的特定项目上切换类 我使用 v for 循环数据并将其打印给用户 目标是当用户单击表内的特定元素时切换类 当我尝试添加 v bind class active isActive 时 它只是将该类添加到所有类中 而不是特
  • Angular JS:如何通过 $http 设置所有调用的上下文路径?

    我正在 Web 服务器中部署我的 Angular 应用程序 该应用程序可能位于http localhost 8080 app name or http foobars com 或其他一些 URL 我对绝对路径没有任何保证 有时调用可能需要转
  • 请求库在 HTTPS 代理 CONNECT 上强制使用 HTTP/1.1

    我遇到了 HTTP 代理服务器行为异常的问题 不幸的是 我无法控制代理服务器 它是 IBM 的 企业 产品 代理服务器是用于软件测试的服务虚拟化解决方案的一部分 根本问题 我认为 是代理服务器发回 HTTP 1 0 响应 我可以从 SOAP
  • 如何通过向上移动到地址栏来检测鼠标离开页面?

    我创建了一个 jQuery 事件 当访问者离开页面时会弹出一个对话框 我正在使用 e pageY 来检测鼠标位置 当鼠标位于Y 小于2时 弹出对话框 问题是 当我向下滚动页面并决定离开页面时 弹出窗口不会显示 因为鼠标不在 Y 小于 2 处
  • Django - 检测用户是否在线/离线

    我正在使用 Django 1 10 和 Django REST 我需要知道用户是否登录 离线 在线 我怎样才能做到这一点 我正在使用基于令牌的身份验证 我试过这个article http www djangocurrent com 2011
  • 使用 Perl 进行数据签名

    我参与了这个涉及发送签名数据的项目 我已经获得了一个 pem 文件和一个服务器证书 我应该将其导入到另一台服务器 我应该使用这些文件对数据进行签名 然后将签名的数据发送到另一台服务器进行验证和处理 我的问题是 如何将这两个文件导入到我的服务
  • 如何在vim中将菜单键(“应用程序键”)映射到Escape键?

    我认为使用菜单键退出 vim 的插入模式将是一件很棒的事情 使用 Super 键也很好 但我不确定是否可能 因为 Super 键是一个修饰符 无论如何 我找不到任何与此相关的内容 寻求您的帮助并提前致谢 我认为没有任何方法可以配置 Vim
  • 登录成功后身份服务器不重定向

    我正在尝试使用 MVC 客户端设置 IdentityServer4 一切工作正常 直到我想添加 ASP 身份 当我添加代码来使用 SQL Server 和 Identity 时 成功登录后 Identity 服务器不会将我重定向回客户端 而
  • 无法读取数据,因为它的格式不正确。”

    2 https i stack imgur com 7QlIS pngI am using AFNetworking to send data to server Below is my code AFHTTPRequestOperatio
  • 如何将 System.Windows.Forms 添加到我的 .NET 5.0 项目中?

    对于我缺乏术语和理解 我提前表示歉意 我对 NET 和 Visual Studio 非常陌生 我在 Windows 7 64 位上的 Visual Studio Community 2019 版本 16 10 4 中使用 Visual Ba
  • 为什么我们需要带有聚合函数的 GROUP BY?

    我看到一个例子 其中有一个员工列表 表 及其各自的月薪 我对工资进行了汇总 并在输出中看到了完全相同的表格 这很奇怪 这是必须做的 我们必须找出本月我们支付多少员工工资 为此 我们需要在数据库中对他们的工资金额进行求和 如下所示 SELEC