SQL如何对指定行相减生成自定义列计算各级别独有用户数
用户等级用户数统计需求
我需要统计每个用户等级的总用户数,对比完成对应等级的总用户数,生成Unique Users列:该列取值为当前等级Users数减去下一级Users数,最高等级Appr无需减法,Unique Users值直接等于该等级的Users数,参考示例如下:
| CPNT_ID | Users | Unique Users |
|---|---|---|
| Trainee | 44662 | 11563 (计算公式:44662-33099) |
| SvcTech | 33099 | 12420 (计算公式:33099-20679) |
| CrewChief | 20679 | 5079 (计算公式:20679-15600) |
| SvcCoord | 15600 | 6010 (计算公式:15600-9590) |
| Appr | 9590 | 9590 (为最高等级,无需减法) |
现有统计各等级总用户数的SQL代码
select cpnt.cpnt_id ,count ( distinct pc.stud_id ) users from pa_stud_program sp, pa_program p, pa_student s, pa_stud_cpnt pc, ps_program_type pt, pa_cpnt cpnt WHERE p.PROGRAM_SYS_GUID = sp.PROGRAM_SYS_GUID and pc.compl_dte is not null and cpnt.cpnt_id in ('Trainee','SvcTech','CrewChief','SvcCoord','Appr') and s.jp_id in ('1801','1805','1810','1811') and s.EMP_STAT_ID = 'Active' AND cpnt.CPNT_TYP_ID = p.CPNT_TYP_ID AND cpnt.CPNT_ID = p.CPNT_ID AND cpnt.REV_DTE = p.REV_DTE AND pc.STUD_ID = sp.STUD_ID AND sp.stud_id = s.STUD_ID AND pc.CPNT_ID = sp.CPNT_ID AND pc.CPNT_TYP_ID = sp.CPNT_TYP_ID AND pc.REV_DTE = sp.REV_DTE AND pc.seq_num = sp.seq_num AND pt.PROGRAM_TYPE_ID = p.PROGRAM_TYPE /** and s.PERSON_ID_EXTERNAL in [UserSearch]*/ group by cpnt.cpnt_id order by users desc
内容的提问来源于stack exchange,提问作者Mr Grimm
相关产品推荐
相关产品推荐

