Загрузка данных


SELECT 
    full_name,
    position,
    hire_date,
    YEAR(hire_date) AS year_hire,
    MONTH(hire_date) AS month_hire,
    WEEKDAY(hire_date) AS weekday_hire  -- 0 = понедельник
FROM employees;
SELECT 
    MONTH(hire_date) AS month_number,
    COUNT(*) AS employees_hired
FROM employees
GROUP BY MONTH(hire_date)
ORDER BY employees_hired DESC;
SELECT *
FROM attendance
WHERE DATE(check_in) = '2025-04-11'
   OR DATE(check_out) = '2025-04-11';
SELECT *
FROM employees
WHERE hire_date >= CURDATE() - INTERVAL 60 DAY;
SELECT 
    e.full_name,
    a.check_in
FROM attendance a
JOIN employees e ON a.employee_id = e.id
WHERE DATE(a.check_in) = CURDATE()
  AND a.check_out IS NULL;
SELECT 
    full_name,
    TIMESTAMPDIFF(MONTH, hire_date, CURDATE()) AS full_months_worked
FROM employees;
SELECT 
    *,
    ROUND(TIMESTAMPDIFF(MINUTE, check_in, check_out) / 60.0, 1) AS hours_worked
FROM attendance;
SELECT 
    id,
    employee_id,
    DATE_FORMAT(check_in, '%d.%m.%Y') AS check_in_date,
    DATE_FORMAT(check_in, '%H:%i') AS check_in_time,
    check_out
FROM attendance;
SELECT 
    CONCAT(
        SUBSTRING_INDEX(full_name, ' ', -3), ' ', 
        SUBSTRING_INDEX(SUBSTRING_INDEX(full_name, ' ', 2), ' ', -1), ' ',
        SUBSTRING_INDEX(full_name, ' ', 1),
        ' работает с ', 
        DAY(hire_date), ' ',
        MONTHNAME(hire_date), ' ',
        YEAR(hire_date), ' года'
    ) AS employee_info
FROM employees;
SELECT 
    e.full_name,
    ROUND(SUM(TIMESTAMPDIFF(MINUTE, a.check_in, a.check_out)) / 60.0, 1) AS total_hours_april
FROM attendance a
JOIN employees e ON a.employee_id = e.id
WHERE MONTH(a.check_in) = 4 
  AND YEAR(a.check_in) = 2025
  AND a.check_out IS NOT NULL
GROUP BY e.id
ORDER BY total_hours_april DESC;
SELECT 
    e.full_name,
    a.check_in
FROM attendance a
JOIN employees e ON a.employee_id = e.id
WHERE DATE(a.check_in) = CURDATE()
ORDER BY a.check_in ASC
LIMIT 1;