首页 > 解决方案 > 在mysql中炫耀寻找的值指定列

问题描述

我有一个充满数据的数据库,突出了重要的数据:在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我的任务是找到代表最小和最大就业人数的那些工作,只有这些工作的名称。试过这个不成功。

SELECT jobs.JOB_TITLE FROM employees
INNER JOIN jobs ON employees.JOB_ID = jobs.JOB_ID
INNER JOIN employees AS emp1 ON employees.EMPLOYEE_ID = emp1.EMPLOYEE_ID
GROUP BY jobs.JOB_ID
HAVING COUNT(MIN(emp1.EMPLOYEE_ID)) = COUNT(MIN(employees.EMPLOYEE_ID)) OR 
COUNT(MAX(emp1.EMPLOYEE_ID)) = COUNT(MAX(employees.EMPLOYEE_ID)) 

标签: mysqlsql

解决方案


如果您的 MySql 版本是 8.0+,您可以使用 FIRST_VALUE() 窗口函数:

SELECT DISTINCT
  FIRST_VALUE(j.JOB_TITLE) OVER (ORDER BY COUNT(e.EMPLOYEE_ID)) min_job,
  FIRST_VALUE(j.JOB_TITLE) OVER (ORDER BY COUNT(e.EMPLOYEE_ID) DESC) max_job
FROM jobs j LEFT JOIN employees e 
ON e.JOB_ID = j.JOB_ID
GROUP BY j.JOB_ID, j.JOB_TITLE

推荐阅读