当前位置: 首页 > 面试题库 >

使用SQL MIN()和GROUP BY的额外字段

司空丰
2023-03-14
问题内容

当使用SQL MIN()函数以及GROUP BY时,是否有任何其他列(不是MIN列或GROUP BY列之一)与匹配的MIN行中的数据匹配?

例如,给定一个包含部门名称,员工名称和薪水的表:

SELECT MIN(e.salary), e.* FROM employee e GROUP BY department

显然,我会得到两个不错的专栏,最低工资和部门。员工名称(和其他任何员工字段)是否来自同一行?即带有MIN(salary)的行?

我知道有可能很可能是两个员工具有相同(最低)的薪水,但我很担心(现在)是让所有的(或信息 )最廉价的员工。

这会选择最便宜的推销员吗?

SELECT min(salary), e.* FROM employee e WHERE department = 'sales'

本质上,我可以确定与MIN()函数一起返回的数据将与具有该最小值的(或 单个 )记录匹配吗?

如果数据库很重要,那么我正在使用MySql。


问题答案:

如果您想获得每个部门中最“便宜”的员工,那么您将有两种选择:

SELECT
     E.*     -- Don't actually use *, list out all of your columns
FROM
     Employees E
INNER JOIN
     (
          SELECT
               department,
               MIN(salary) AS min_salary
          FROM
               Employees
          GROUP BY
               department
     ) AS SQ ON
     SQ.department = E.department AND
     SQ.min_salary = E.salary

或者您可以使用:

SELECT
     E.*
FROM
     Employees E1
LEFT OUTER JOIN Employees E2 ON
     E2.department = E1.department AND
     E2.salary < E1.salary
WHERE
     E2.employee_id IS NULL -- You can use any NOT NULL column here

第二个声明的工作原理是有效地告诉我,向所有雇员展示您在同一部门找不到其他较低薪水的雇员。

在这两种情况下,如果两个或两个以上雇员的工资相等,并且最低,您将同时获得这两个雇员(全部)。



 类似资料:
  • 我在MongoDB中有一些地理空间数据,我想找到靠近用户位置并符合某些标准的地方列表。 下面是我的文档结构: 现在我正试图通过纬度,经度,找到有票可用的,并且是某种类型的地方。当我只使用带坐标的NearQuery(不添加查询)时,我得到的是结果,但当我添加查询对象时,我得到的是空列表。 提前致谢

  • 问题内容: 我有这两个课(表) 还有这个: 运行此代码后,在数据库(student_course)中创建了一个额外的表,现在我想知道如何在该表中添加额外的字段,例如(Grade,Date和…(我的意思是student_course表)),我看到了一些解决方案,但我不喜欢它们,而且我对它们有一些问题: 第一个样品 问题答案: 如果在链接表(STUDENT_COURSE)上添加额外的字段,则必须根据s

  • 本文向大家介绍mongoDB使用投影剔除‘额外’字段的操作过程,包括了mongoDB使用投影剔除‘额外’字段的操作过程的使用技巧和注意事项,需要的朋友参考一下 简介 实际开发过程中,为便于开发人员定位问题,常存在多个额外的字段。例如:增加createdAt、updatedAt字段以查看数据的创建和更改时间。而对于客户端而言,无需知道其存在。针对以上情况,本文详细介绍了“额外”字段的用途以及处理过程

  • 我有列表有字段名称,货币和金额。我想按名称、货币和金额来分组。 我想要列表中的结果/输出

  • 我正在使用Laravel迁移创建表。它在处创建了处更新了使用

  • 问题内容: 使用样本数据: df 我试图弄清楚如何按key1分组数据并仅对key2等于“ one”的data1值求和。 这是我尝试过的 但这给了我一个数值为“无”的数据框 这里有什么想法吗?我正在寻找与以下SQL等效的Pandas: 提前致谢 问题答案: 首先按key1列分组: 然后为每个组取subDataFrame,其中key2等于“ one”并求和data1列: 为了解释发生了什么,让我们看一