【问题标题】:Percentage of total in PivotTable数据透视表中总数的百分比
【发布时间】:2013-12-11 12:07:11
【问题描述】:

我在 Excel 2007 中使用 SQL 查询将通过/失败数据从两个测试台拉到数据透视表中。以下是我当前/理想的输出,请原谅日期的格式!

我已经尝试过“值字段设置”>“将值显示为列的百分比”,但这不能正常工作,因为它还会划分钻机之间的通过率。我找到了更改父列的参考,但这似乎是 Excel 2010 以后的版本。谁能指出我正确的方向?

电流输出

Pass Rate   Date                    
Outcome      2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
F                67         17          50          62           51 
RigOne           33         11          31          25           27
RigTwo           34          6          19          37           24
P                80         29          54          79           46
RigOne           50         21          32          42           21
RigTwo           30          8          22          37           25
Grand Total     147         46         104         141           97 

理想输出

Pass Rate   Date                    
             2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
RigOne           %%         %%          %%          %%           %%
RigTwo           %%         %%          %%          %%           %%
Average          %%         %%          %%          %%           %% 

【问题讨论】:

    标签: sql excel pivot-table percentage


    【解决方案1】:

    如果这是您想要的结果:

    那么,假设您的源数据分为四列:Rig、Date、Outcome 和 Value:

    1. 为行标签创建一个 PT,为列标签创建日期和结果(自上而下的顺序),为 Σ 值创建一个值总和。
    2. 在快速菜单、数据透视表选项...、总计和过滤器中取消选中显示行总计。
    3. 选择 Fail 并在数据透视表工具 > 选项 > 工具 - 公式、计算项...为名称添加平均值:并在公式中输入 =Pass/(Pass +Fail )
    4. 选择平均值并从 A 到 Z 排序。
    5. 在总计下方的一行中,计算每个日期平均值下的加权平均通过率。
    6. 设置总计行的字体颜色以匹配填充颜色。
    7. 隐藏通过/失败列和行标签行。
    8. 将单元格更改为通过率和日期。
    9. 适合的格式。

    【讨论】:

    • 嗨!不幸的是,这并不是那么简单——我的列是 Rig、Date 和 Outcome,结果是 P 或 F。不幸的是,这是测试台编码的一部分,所以不在我的控制范围内。我一直在尝试在计算字段中使用 COUNT(Pass) 来给我一个总数,并使用 COUNTIF (Pass = "P") 来给我一个通过计数,然后使用另一个计算字段来给我我的百分比。 .. 但是,COUNT(Pass) 总是给我一个结果 1,并且 COUNTIF 在计算字段中似乎不是有效的。
    【解决方案2】:

    实际上,我已经设法通过更改我的 SQL 查询来提供建议的输入 pnuts 来做到这一点。一旦我更改了代码,它就非常简单了——我只是为每个钻机创建了一个计算字段,将通过次数除以测试次数以及两者的平均值,然后将它们格式化为百分比。如果它对任何人有用,我在下面包含了我的 SQL。可能很笨拙,但它给出了正确的答案!

    SELECT CONVERT (Date, [Stamp]) AS Date
      ,SUM(case when Pass='P' and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Passes
      ,SUM(case when Pass='P' and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Passes
      ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Tests
      ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Tests
    FROM [dbase].[dbo].[tbl_Results]
    where Stamp > '2013-12-01'
      and TestName = 'Finished'
    GROUP BY CONVERT (Date, [Stamp])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      相关资源
      最近更新 更多