在线Coding题目例如:部门表(id,名称...),员工表(id,部门id,姓名,薪资,入职时间...),查出部门中薪资最高的员工;部门薪资总和;部门中入职时间在2022年4月份-2023年4

 
在线Coding题目
例如:部门表(id,名称...),员工表(id,部门id,姓名,薪资,入职时间...),
查出部门中薪资最高的员工;部门薪资总和;
部门中入职时间在2022年4月份-2023年4月份之间的员工

table design

department 部门表
 id varchar(32),
 name varchar(255),

    employee
      id varchar(32),
      name varchar(255),
      department_id varchar(21),

      job
        id varchar(32),
        name varchar(255),

        job_salary
          id varchar(32),
          salary_monthly decimal(6,2),
          job_id varchar(32),
          employee_id varchar(32),

      position
        id varchar(32),
        name varchar(255),

        position_condition
          id varchar(32),
          empolyee_register_time datetime,
          position_id varchar(32),

综合字段生成员工表
  employee_position
    id varchar(32),
    department_id varchar(32), //部门id
    name varchar(255), // 员工姓名
    salary_monthly decimal(6,2), //员工工资
    employee_register_time datetime, //员工入职时间

题目的查询sql


SELECT f.employee_name,
       f.total_salary_depart
  FROM 
(
SELECT *
  FROM 
(
SELECT employee_name,
  total_salary_depart,
  max_salry_monthly_depart
FROM
  (
    SELECT *
    FROM (
           SELECT max(salary_monthly) AS max_salry_monthly_depart,
                  sum(salary_monthly) AS total_salary_depart,
                  substr(b.employee_reister_time, 0, 4) AS emp_resiter_date_year,
                  substr(b.employee_register_time, 4, 2) AS emp_resiter_date_month,
                  a.name as employee_name
           FROM department a
             LEFT JOIN employee_position b
               ON a.id=b.department_id
           GROUP BY department_id
         ) c
    WHERE c.emp_register_date_year='2023'
  ) d
WHERE d.emp_register_date_month='01'
      OR d.emp_register_date_month='02'
      OR d.emp_register_date_month='03'
      OR d.emp_register_date_month='04'

) e
  ORDER BY max_salry_monthly_depart DESC 
LIMIT 1;
) f

union

SELECT f.employee_name,
  f.total_salary_depart
FROM
  (
    SELECT *
    FROM
      (
        SELECT employee_name,
          total_salary_depart,
          max_salry_monthly_depart
        FROM
          (
            SELECT *
            FROM (
                   SELECT max(salary_monthly) AS max_salry_monthly_depart,
                          sum(salary_monthly) AS total_salary_depart,
                          substr(b.employee_reister_time, 0, 4) AS emp_resiter_date_year,
                          substr(b.employee_register_time, 4, 2) AS emp_resiter_date_month,
                          a.name as employee_name
                   FROM department a
                     LEFT JOIN employee_position b
                       ON a.id=b.department_id
                   GROUP BY department_id
                 ) c
            WHERE c.emp_register_date_year='2022'
          ) d
        WHERE d.emp_register_date_month='04'
              OR d.emp_register_date_month='05'
              OR d.emp_register_date_month='06'
              OR d.emp_register_date_month='08'
              OR d.emp_register_date_month='09'
              OR d.emp_register_date_month='10'
              OR d.emp_register_date_month='11'
              OR d.emp_register_date_month='12'

      ) e
    ORDER BY max_salry_monthly_depart DESC
    LIMIT 1;
) f


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员是干活的

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值