MySQL 查询通过 GROUP BY 获取最大值、最小值以及单独行中的多个表连接

标签 mysql sql

表结构

employee_salary

salary_id  |    emp_id    |   salary

员工表结构

emp_id | first_name | last_name | gender | email | mobile | dept_id | is_active

部门:

dept_id | dept_name | manager_name | is_active

问题:

显示部门明智的员工谁的工资最高和最低?

我正在使用查询

SELECT   max(salary) salary,  dept_name, first_name, dept_id , 'MAX' Type
FROM    ( 
        SELECT     a.salary, c.dept_name, b.first_name, b.dept_id, a.salary_id
        FROM       employee_salary a
        LEFT JOIN  employee b 
        ON         a.emp_id = b.emp_id
        LEFT JOIN  department c 
        ON c.dept_id = b.dept_id
        ) t
GROUP BY dept_id

UNION ALL

SELECT   min(salary) salary,  dept_name, first_name, dept_id , 'MIN' Type
FROM    ( 
        SELECT     a.salary, c.dept_name, b.first_name, b.dept_id, a.salary_id
        FROM       employee_salary a
        LEFT JOIN  employee b 
        ON         a.emp_id = b.emp_id
        LEFT JOIN  department c 
        ON c.dept_id = b.dept_id
        ) t
GROUP BY dept_id

ORDER BY dept_id 

我得到的输出如下所示。 我无法从员工表中获取相应的名字,其余所有其他字段都显示正确的值,

salary  dept_name   first_name  dept_id Type

30000   dept_1      Paul        1       MIN
98000   dept_1      Paul        1       MAX
51000   dept_2      Aron        2       MAX
20000   dept_2      Aron        2       MIN
40000   dept_3      Steve       3       MAX
40000   dept_3      Steve       3       MIN
64000   dept_4      Henry       4       MAX
64000   dept_4      Henry       4       MIN

最佳答案

您的选择列表中不能包含非聚合函数或包含在分组依据中的值。确定employeeid 的工资最高或最低后,选择姓名。

关于MySQL 查询通过 GROUP BY 获取最大值、最小值以及单独行中的多个表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067984/

相关文章:

Mysql查询显示两个表中不匹配的记录,如旧记录和新记录

sql - 无法在 SQuirreL SQL 客户端版本 3.5.0 中编辑别名属性?

sql - 使用 GROUP BY 子句时 SELECT DISTINCT 是否总是多余的?

mysql - 使用MYSQL计算同一列中多个日期之间的时间

sql - 如何制作按月分组的年度报告?

mysql - 表的 key 文件不正确,尝试修复它?

php - 将数据插入 SQL 数据库不起作用,但说它已经起作用

mysql - 如何在 GROUP(group by) 中选择包含 MAX(some_field) 的记录

php - 如何优化或组合这些 MySQL 查询?

php - 使用 PHP 和 FPDF 创建 PDF 文件时未获取所有列值