sql题库2

SQL之存在性问题分析-HQL面试题39_石榴姐yyds-CSDN博客_sql 石榴姐

存在性问题。求截止当前月退费总人数

退费人数:上月存在,这月不存在的学生个数。

表stu中字段day日期,stu_id学生id。

求每个月缴费名单,每个月分别合并stu_id。
按月份排序,获取下一月合并后的值。
当前的stu_id是否在下一月array数组中,如果存在标记0,不存在标记1。
对flag按月求和即为下一个月退费人数。
再将上一个月的退费人数获取到当前行,为每月的退费人数。
进行累加计算截止到当前月的退费总人数。
--
select
  month,
  sum(lag_month_cnt) over(order by month)
from(
    select
      month,
      lag(next_month_cnt, 1, 0) over(order by month) as lag_month_cnt
    from(
        select
          distinct t0.month as month,
          sum(if(!array_contains(t1.lead_stu_id_arr,t0.stu_id),1,0)) over(partition by t0.month) as next_month_cnt
        from(
            select
              substr(day,1,7) as month,
              stu_id
            from
              stu
          ) t0
          left join(
            select
              month,
              lead(stu_id_arr, 1) over(order by month) as lead_stu_id_arr
            from(
                select
                  substr(day, 1, 7) as month,
                  collect_list(stu_id) as stu_id_arr
                from
                  stu
                group by
                  substr(day, 1, 7)
              ) m
          ) t1 on t0.month = t1.month
      ) n
  ) o

21、获取积分最多的人

SQL之获取积分最多的人--HQL面试题37_石榴姐yyds-CSDN博客_获得积分最多的人

查找积分最高的用户的id、名字、总积分。

用户表user:id,name

积分表grade_info:name,grade_num,type

type为add,积分是增加grade_num。type为reduce,积分是减少grade_num。

select t0.user_id as user_id,
       t1.name as name,
       t0.grade as grade
from(
        select user_id,grade
        from(
            select user_id,
                   grade,
                   dense_rank() over(order by grade desc) as rn
                from(
                    select user_id,sum(if(type='add',grade_num,-1*grade_num)) as grade
                    from grade_info
                    group by user_id
                ) m
      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值