You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL新手求助:设计查询语句提取员工部门相关数据

嘿,作为SQL新手不用慌,先帮你理清楚你的EMPLOYEES表结构,然后给你几种常用的员工部门相关数据查询语句,按需选用就行~

首先,你的EMPLOYEES表结构整理后是这样的:

CREATE TABLE EMPLOYEES ( 
    EMPLOYEE_ID NUMERIC(6,0), 
    FIRST_NAME VARCHAR(20), 
    LAST_NAME VARCHAR(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL, 
    EMAIL VARCHAR(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL, 
    PHONE_NUMBER VARCHAR(20), 
    HIRE_DATE DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL, 
    JOB_ID VARCHAR(10) CONSTRAINT "EMP_JOB_NN" NOT NULL, 
    SALARY NUMERIC(8,2), 
    COMMISSION_PCT NUMERIC(2,2), 
    MANAGER_ID NUMERIC(6,0), 
    DEPARTMENT_ID NUMERIC(4,0)
);
常用员工部门数据查询场景

1. 查询所有员工的基础信息+所属部门ID

这是最基础的查询,明确指定需要的字段比用SELECT *更清晰,性能也更好:

SELECT 
    EMPLOYEE_ID,
    FIRST_NAME,
    LAST_NAME,
    EMAIL,
    HIRE_DATE,
    DEPARTMENT_ID
FROM EMPLOYEES;

2. 查询某个特定部门下的所有员工

如果需要聚焦某个部门,比如部门ID为10的员工,用WHERE子句过滤即可,还可以拼接员工全名让结果更易读:

SELECT 
    EMPLOYEE_ID,
    FIRST_NAME || ' ' || LAST_NAME AS FULL_NAME, -- 拼接姓和名为全名
    JOB_ID,
    SALARY,
    DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 10; -- 把10换成你要查询的目标部门ID

3. 查询员工及其直属经理的关联信息

你的表中有MANAGER_ID字段,可以通过自连接来关联员工和他们的经理,用LEFT JOIN能确保那些没有直属经理的员工也会被显示出来:

SELECT 
    e.EMPLOYEE_ID AS EMPLOYEE_ID,
    e.FIRST_NAME || ' ' || e.LAST_NAME AS EMPLOYEE_NAME,
    m.EMPLOYEE_ID AS MANAGER_ID,
    m.FIRST_NAME || ' ' || m.LAST_NAME AS MANAGER_NAME,
    e.DEPARTMENT_ID
FROM EMPLOYEES e
LEFT JOIN EMPLOYEES m ON e.MANAGER_ID = m.EMPLOYEE_ID;

4. 按部门分组统计员工数量和平均薪资

如果需要做部门层面的汇总分析,用GROUP BY配合聚合函数就能实现,比如统计每个部门的员工数和平均薪资:

SELECT 
    DEPARTMENT_ID,
    COUNT(EMPLOYEE_ID) AS EMPLOYEE_COUNT, -- 统计部门内员工总数
    ROUND(AVG(SALARY), 2) AS AVG_SALARY -- 计算部门平均薪资,保留2位小数
FROM EMPLOYEES
WHERE DEPARTMENT_ID IS NOT NULL -- 排除没有分配部门的员工
GROUP BY DEPARTMENT_ID
ORDER BY EMPLOYEE_COUNT DESC; -- 按员工数量从多到少排序
新手小贴士
  • 用AS给字段取别名,能让查询结果更易读,比如上面的FULL_NAME、EMPLOYEE_COUNT
  • 如果遇到DEPARTMENT_ID为NULL的情况(即员工未分配部门),可以用COALESCE函数把NULL替换成友好的文本,比如COALESCE(CAST(DEPARTMENT_ID AS VARCHAR), '未分配部门') AS DEPARTMENT_INFO
  • 写SQL的时候尽量格式化(比如换行、缩进),自己和别人读起来都更方便

内容的提问来源于stack exchange,提问作者J.M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:17:46