李丢儿 2023-01-13 12:03 采纳率: 0%
浏览 31

这个sql逻辑怎么写

同一个岗位,生效时间取最原始的,职级选最新的
不同岗位都取最新的就行

比如,一个人在这个岗位三年,竞升了两次,目前最新职级是a,时间是2022-12-31,但它最开始待在这个岗位的时间是2021-7-6,职级是c;所以要生效时间取2021-7-6,职级取a,搞成一条数据!

  • 写回答

2条回答 默认 最新

  • heart_6662 2023-01-13 12:15
    关注

    为了得到这个结果,你可以考虑这样的SQL语句:

    SELECT 
      post, 
      MAX(date) as date,
      MAX(level) as level
    FROM 
      table1
    GROUP BY 
      post
    
    

    这个语句会按照岗位进行分组,对于每一组,选出最新的生效时间和最新的职级。

    如果你要按照人来统计,那么可以这样写

    SELECT 
      id,
      MAX(CASE WHEN level='a' THEN date ELSE null END) as date,
      MAX(level) as level
    FROM 
      table1
    GROUP BY 
      id
    
    

    这个语句会按照人进行分组,对于每一组,选出最新的生效时间和最新的职级。

    这里假设表中有列为id,post,level,date,如果表中列不一样,请修改上述语句

    评论

报告相同问题?

问题事件

  • 创建了问题 1月13日

悬赏问题

  • ¥15 Windows 驱动 pcie问题
  • ¥15 用C语言完成一个复杂的游戏
  • ¥15 如何批量更改很多个文件夹里的文件名中包含文件夹名?
  • ¥50 MTK手机模拟HID鼠标出现卡顿
  • ¥20 求下下面这个数据结构代码
  • ¥15 路由器考试怎么办,有懂行的吗 ,eNSP
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题