ERP Agent: SQL artifacts executed by PostgreSQL

1. 平均每个员工在职多久?

SELECT AVG(COALESCE(leave_date, CURRENT_DATE) - hire_date) AS average_tenure_days FROM employees
886.2

PASS: independent Python reference matched

2. 每个部门有多少在职员工?

SELECT department, COUNT(emp_id) AS active_count FROM employees WHERE leave_date IS NULL GROUP BY department
人力资源部4
市场部9
研发部5
财务部6
销售部10

PASS: independent Python reference matched

3. 哪个部门员工平均级别最高?

SELECT department
FROM employees
GROUP BY department
ORDER BY AVG(level) DESC
LIMIT 1
销售部

PASS: independent Python reference matched

4. 每个部门今年和去年各新入职多少人?

SELECT department,
       COUNT(*) FILTER (WHERE EXTRACT(YEAR FROM hire_date) = EXTRACT(YEAR FROM CURRENT_DATE)) AS "this-year count",
       COUNT(*) FILTER (WHERE EXTRACT(YEAR FROM hire_date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1) AS "last-year count"
FROM employees
GROUP BY department
HAVING COUNT(*) FILTER (WHERE EXTRACT(YEAR FROM hire_date) = EXTRACT(YEAR FROM CURRENT_DATE)) > 0
   OR COUNT(*) FILTER (WHERE EXTRACT(YEAR FROM hire_date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1) > 0
财务部01
销售部21
人力资源部20
研发部12
市场部04

PASS: independent Python reference matched

5. 前年3月到去年5月,A部门平均工资是多少?

SELECT AVG(s.salary)
FROM employees e
JOIN salaries s ON e.emp_id = s.emp_id
WHERE e.department = '研发部'
  AND s.pay_date BETWEEN make_date(EXTRACT(YEAR FROM CURRENT_DATE)::INTEGER - 2, 3, 1)
                      AND make_date(EXTRACT(YEAR FROM CURRENT_DATE)::INTEGER - 1, 5, 31)
27695.833333333332

PASS: independent Python reference matched

6. 去年A部门和B部门平均工资哪个高?

SELECT department, AVG(salary) AS average_salary
FROM employees
JOIN salaries ON employees.emp_id = salaries.emp_id
WHERE department IN ('研发部', '销售部')
  AND pay_date >= date_trunc('year', CURRENT_DATE) - INTERVAL '1 year'
  AND pay_date < date_trunc('year', CURRENT_DATE)
GROUP BY department
研发部28569.444444444445
销售部29481.55339805825

PASS: independent Python reference matched

7. 今年每个级别的员工平均工资是多少?

SELECT e.level, AVG(s.salary) AS average_salary
FROM employees e
JOIN salaries s ON e.emp_id = s.emp_id
WHERE EXTRACT(YEAR FROM s.pay_date) = EXTRACT(YEAR FROM CURRENT_DATE)
GROUP BY e.level
323456.428571428572
426248.823529411766
534534.75
628461.363636363636
729935.0
832242.69230769231
934559.90566037736

PASS: independent Python reference matched

8. 入职一年内、一到两年、两到三年的员工,最近一个月平均工资是多少?

WITH latest_salaries AS (
    SELECT DISTINCT ON (emp_id) emp_id, salary
    FROM salaries
    ORDER BY emp_id, pay_date DESC
)
SELECT 
    CASE 
        WHEN (CURRENT_DATE - e.hire_date)::INTEGER < 365 THEN '入职一年内'
        WHEN (CURRENT_DATE - e.hire_date)::INTEGER BETWEEN 365 AND 729 THEN '一到两年'
        WHEN (CURRENT_DATE - e.hire_date)::INTEGER BETWEEN 730 AND 1094 THEN '两到三年'
    END AS bucket,
    AVG(ls.salary) AS average_latest_salary
FROM employees e
JOIN latest_salaries ls ON e.emp_id = ls.emp_id
WHERE e.leave_date IS NULL
    AND (CURRENT_DATE - e.hire_date)::INTEGER < 1095
GROUP BY bucket
ORDER BY bucket
一到两年27683.125
两到三年31138.75
入职一年内24053.75

PASS: independent Python reference matched

9. 去年到今年涨薪幅度最大的10位员工是谁?

WITH emp_salary_avg AS (
    SELECT 
        emp_id,
        AVG(salary) FILTER (WHERE EXTRACT(YEAR FROM pay_date) = EXTRACT(YEAR FROM CURRENT_DATE)) AS current_avg,
        AVG(salary) FILTER (WHERE EXTRACT(YEAR FROM pay_date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1) AS previous_avg
    FROM salaries
    GROUP BY emp_id
    HAVING 
        AVG(salary) FILTER (WHERE EXTRACT(YEAR FROM pay_date) = EXTRACT(YEAR FROM CURRENT_DATE)) IS NOT NULL
        AND AVG(salary) FILTER (WHERE EXTRACT(YEAR FROM pay_date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1) IS NOT NULL
)
SELECT 
    e.name,
    (esa.current_avg - esa.previous_avg) AS raise_amount
FROM emp_salary_avg esa
JOIN employees e ON esa.emp_id = e.emp_id
ORDER BY raise_amount DESC
LIMIT 10
韩平12000.0
韩伟2200.0
吕芳2155.0
金丽2110.0
许华2065.0
陶松1975.0
周雪1930.0
吴敏1885.0
张霞1840.0
赵平1795.0

PASS: independent Python reference matched

10. 有没有拖欠工资的情况(某个月还在职却没有发薪)?

WITH employee_employed_months AS (
    SELECT 
        e.emp_id,
        generate_series(
            date_trunc('month', e.hire_date),
            date_trunc('month', COALESCE(e.leave_date, CURRENT_DATE)),
            interval '1 month'
        ) AS employed_month
    FROM employees e
)
SELECT 
    em.emp_id,
    to_char(em.employed_month, 'YYYY-MM') AS month
FROM employee_employed_months em
LEFT JOIN salaries s 
    ON em.emp_id = s.emp_id 
    AND date_trunc('month', s.pay_date) = em.employed_month
WHERE s.emp_id IS NULL
172026-01

PASS: independent Python reference matched