Hailey Zhou 2022-09-28 03:33 采纳率: 60%
浏览 121
已结题

Sql server中如何在case when 里面做除法,分母是另一个sub query

大家好,请大家帮忙一下这一题:

img

第一个表是我现在的数据,第二个表是我想要的结果。我想要加多一列计算这个VM%,这个VM%=Voice Mail 的数量除以这一个组总共接听数。例如Team 1在9/2 号的VM%=3/(22+3), Team 2 在9/2 的VM%=7/(101+7)。以此类推。软件用到是sql server。谢谢!!

  • 写回答

6条回答 默认 最新

  • chuifengde 2022-09-28 08:59
    关注
    --三楼的改一下
    DECLARE @a TABLE([Date] DATE,[Group Name] VARCHAR(50),[Total Answered] INT)
    
    INSERT @a SELECT '9/2/2022','Team 1',22
    UNION ALL SELECT '9/2/2022','Team 1 Voice Mail',3
    UNION ALL SELECT '9/2/2022','Team 2',101
    UNION ALL SELECT '9/2/2022','Team 2 Voice Mail',7
    UNION ALL SELECT '9/6/2022','Team 1',55
    UNION ALL SELECT '9/6/2022','Team 1 Voice Mail',2
    UNION ALL SELECT '9/6/2022','Team 2',100
    UNION ALL SELECT '9/6/2022','Team 2 Voice Mail',3
    
    SELECT
        [Date],
        [Group Name],
        [Total Answered],
        CASE WHEN CHARINDEX('Mail',[Group Name])>0 THEN
        CONVERT(REAL,[Total Answered]) /
        (   SELECT SUM([Total Answered])
            FROM @a 
            WHERE [Date] = t1.[Date] AND [Group Name] LIKE LEFT(t1.[Group Name],6) + '%'
        )
        END 'VM%'
    FROM @a t1;
    
    --result
    2022-09-02    Team 1    22    NULL
    2022-09-02    Team 1 Voice Mail    3    0.12
    2022-09-02    Team 2    101    NULL
    2022-09-02    Team 2 Voice Mail    7    0.06481481
    2022-09-06    Team 1    55    NULL
    2022-09-06    Team 1 Voice Mail    2    0.03508772
    2022-09-06    Team 2    100    NULL
    2022-09-06    Team 2 Voice Mail    3    0.02912621
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题