HR SQL Generator - Human Resources Analytics
Human Resources data spans employee records, payroll, benefits, performance, and more. AI2sql HR SQL Generator helps HR analysts and HRIS administrators create queries for workforce management and analytics.
HR Data Domains
Employee Records - Personal info, job history, departments
Payroll - Salary, deductions, payments
Time and Attendance - Hours, leave, overtime
Performance - Reviews, goals, ratings
Recruiting - Applications, interviews, offers
Benefits - Enrollment, plans, costs
HR Query Examples
Headcount Report
Input: "Show headcount by department and employment type"
SELECT
d.department_name,
e.employment_type,
COUNT(*) as headcount,
ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (PARTITION BY d.department_name), 1) as pct_of_dept
FROM employees e
INNER JOIN departments d ON e.department_id = d.id
WHERE e.status = 'active'
GROUP BY d.department_name, e.employment_type
ORDER BY d.department_name, headcount DESC;
Turnover Analysis
Input: "Calculate monthly turnover rate by department"
WITH monthly_stats AS (
SELECT
DATE_FORMAT(termination_date, '%Y-%m') as month,
department_id,
COUNT(*) as terminations
FROM employees
WHERE termination_date IS NOT NULL
AND termination_date >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
GROUP BY DATE_FORMAT(termination_date, '%Y-%m'), department_id
),
headcount AS (
SELECT
department_id,
COUNT(*) as avg_headcount
FROM employees
WHERE status = 'active' OR termination_date >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
GROUP BY department_id
)
SELECT
d.department_name,
m.month,
m.terminations,
h.avg_headcount,
ROUND(100.0 * m.terminations / h.avg_headcount, 2) as turnover_rate
FROM monthly_stats m
INNER JOIN headcount h ON m.department_id = h.department_id
INNER JOIN departments d ON m.department_id = d.id
ORDER BY m.month, d.department_name;
Compensation Analysis
Input: "Show salary statistics by job level and gender"
SELECT
job_level,
gender,
COUNT(*) as employees,
ROUND(AVG(salary), 0) as avg_salary,
ROUND(MIN(salary), 0) as min_salary,
ROUND(MAX(salary), 0) as max_salary,
ROUND(STDDEV(salary), 0) as salary_std
FROM employees
WHERE status = 'active'
GROUP BY job_level, gender
ORDER BY job_level, gender;
Leave Balance Report
Input: "Show employees with high unused leave balances"
SELECT
e.employee_id,
e.name,
e.department,
lb.leave_type,
lb.accrued - lb.used as balance,
lb.accrued,
lb.used
FROM employees e
INNER JOIN leave_balances lb ON e.employee_id = lb.employee_id
WHERE e.status = 'active'
AND (lb.accrued - lb.used) > 15
ORDER BY balance DESC;
Tenure Analysis
Input: "Show employee tenure distribution"
SELECT
CASE
WHEN tenure_years < 1 THEN 'Less than 1 year'
WHEN tenure_years < 3 THEN '1-3 years'
WHEN tenure_years < 5 THEN '3-5 years'
WHEN tenure_years < 10 THEN '5-10 years'
ELSE '10+ years'
END as tenure_bucket,
COUNT(*) as employees,
ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (), 1) as percentage
FROM (
SELECT
TIMESTAMPDIFF(YEAR, hire_date, CURDATE()) as tenure_years
FROM employees
WHERE status = 'active'
) t
GROUP BY tenure_bucket
ORDER BY MIN(tenure_years);
HRIS System Compatibility
Generate queries compatible with:
Workday
SAP SuccessFactors
Oracle HCM
ADP
BambooHR
Custom HRIS databases
Start Building HR Queries
Transform HR data into workforce insights. Describe your analytics needs and get accurate HR database queries.