SELECT d.dept_no, d.emp_no, s.salary FROM dept_emp d JOIN salaries s ON d.emp_no = s.emp_no WHERE d.dept_no IN ( SELECT d.dept_no FROM dept_emp d JOIN salaries s ON d.emp_no = s.emp_no GROUP BY d.dept_no, d.emp_no ORDER BY s.salary ASC )这段SQL中如何只查询每组的第一个数据内容:您可以使用窗口函数来解决这个问题。窗口函数可以对查询结果进行分组并排序,并为每个分组分配一个序号。然后,您可以通过在外部查询中选择序号为1的行来获取每个分组的第一个数据。

以下是修改后的SQL查询:

SELECT dept_no, emp_no, salary FROM ( SELECT d.dept_no, d.emp_no, s.salary, ROW_NUMBER() OVER (PARTITION BY d.dept_no ORDER BY s.salary ASC) AS rn FROM dept_emp d JOIN salaries s ON d.emp_no = s.emp_no ) AS subquery WHERE rn = 1;

在这个查询中,首先在子查询中使用窗口函数ROW_NUMBER(),根据部门编号对数据进行分组,并按工资升序排序。然后,在外部查询中选择序号为1的行,即每个分组的第一个数据。

SQL查询优化:获取每个分组的第一个数据

原文地址: https://www.cveoy.top/t/topic/pbKR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录