如何比较某字段两行中的值

year     month     user       num

2021    01            anna      1000

2021    01            lily          789

假设有这样一张表,我想要比较同年同月不同user的num值大小并算出差值,sql要怎么写,求教各位大神

访客登录 发布于 2022-1-19 17:44 (编辑于 2022-1-19 17:44)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
zsh331Lv8专家互助
发布于2022-1-19 17:56

select year,month,max(num)-min(num) as cz from tabname group by year,month

——————————————————

  • 访客登录 访客登录(提问者) 我想的是除了left join 有没有方法保留已有的所有字段,只是在后面新增一列记录差值
    2022-01-20 09:05 
  • zsh331 zsh331 回复 访客登录(提问者) 用开窗函数,年月开窗,num字段降序,算错行差值
    2022-01-20 09:12 
  • 访客登录 访客登录(提问者) 回复 zsh331 好的,我去试试,谢谢提供思路
    2022-01-20 09:27 
  • zsh331 zsh331 回复 访客登录(提问者) 不客气,相互学习
    2022-02-15 10:07 
最佳回答
0
梦似幻亦真Lv3见习互助
发布于2022-1-19 18:09

SELECT

    A.year,

    A.month,

    A.user,

    B.user,

    A.num - B.num AS num,

    case

        when A.num > B.num THEN A.user

        WHEN A.num < B.num THEN B.user

        ELSE '一样大'

    END AS result

FROM

    table AS A

    INNER JOIN  table AS B ON A.year = B.year

    AND A.month = B.month

    AND A.user <> B.user

  • 3关注人数
  • 310浏览人数
  • 最后回答于:2022-1-19 18:09
    请选择关闭问题的原因
    确定 取消
    返回顶部