美文网首页
打卡第7天 -- 3S2A1P : 三道sql,2道算法,1道简

打卡第7天 -- 3S2A1P : 三道sql,2道算法,1道简

作者: CnLearn | 来源:发表于2020-09-15 00:01 被阅读0次

    打卡第7天 -- 3S2A1P : 三道sql,2道算法,1道简答

    sql-1

    https://www.nowcoder.com/practice/4bcb6a7d3e39423291d2f7bdbbff87f8?tpId=82&&tqId=29778&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking

    汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的当前(dept_emp.to_date = '9999-01-01')员工的当前(titles.to_date = '9999-01-01')title以及该类型title对应的数目count

    (注:因为员工可能有离职,所有dept_emp里面to_date不为'9999-01-01'就已经离职了,不计入统计,而且员工可能有晋升,所以如果titles.to_date 不为 '9999-01-01',那么这个可能是员工之前的职位信息,也不计入统计)

    -- 整理逻辑
    -- 使用join
    -- 使用 group by
    -- 使用 count(*)
    
    select dep.dept_no,dep.dept_name,t.title,count(*) from 
    titles t inner join dept_emp d on t.to_date='9999-01-01' and t.emp_no=d.emp_no 
    inner join departments dep on d.to_date='9999-01-01' and d.dept_no=dep.dept_no
    group by dep.dept_no,t.title
    

    sql-2

    https://www.nowcoder.com/practice/eb9b13e5257744db8265aa73de04fd44?tpId=82&&tqId=29779&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking

    给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。

    提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)

    (数据保证每个员工的每条薪水记录to_date-from_date=1年,而且同一员工的下一条薪水记录from_data=上一条薪水记录的to_data)

    -- 学会使用表的自连接
    
    select s1.emp_no,
           s1.from_date,
           s1.salary-s2.salary as salary_growth
    from salaries s1 inner join salaries s2
    on s1.emp_no=s2.emp_no
    and  s1.from_date=s2.to_date
    and s1.salary-s2.salary>5000
    order by salary_growth desc
    
    select s1.emp_no,
           s1.from_date,
           s1.salary-s2.salary as salary_growth
    from salaries s1 inner join salaries s2
    on s1.emp_no=s2.emp_no
    and (strftime('%Y', s1.to_date)-strftime('%Y', s2.to_date)=1 or
        strftime('%Y', s1.from_date)-strftime('%Y', s2.from_date)=1)
    and s1.salary-s2.salary>5000
    order by salary_growth desc
    

    sql-3

    https://www.nowcoder.com/practice/859f28f43496404886a77600ea68ef59?tpId=82&&tqId=29811&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking

    将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。

    -- 掌握 update 语法
    update titles_test set from_date='2001-01-01' , to_date=null where to_date='9999-01-01'
    

    相关文章

      网友评论

          本文标题:打卡第7天 -- 3S2A1P : 三道sql,2道算法,1道简

          本文链接:https://www.haomeiwen.com/subject/bccxyktx.html