如何在Access中将组/数据除以%?

问题描述

这是我目前拥有的代码,它按用户的“ FWB”得分将其划分为不同的类别,仅用于应对,表现出色,获得成功等。

SELECT FWBscore,gender,respondentname,IIf(FWBscore<=22.5,"Having Trouble",IIf(FWBscore>=25 AND FWBscore<=47.5,"Just coping",IIf(FWBscore>=50. AND FWBscore<=75.0,"Getting By",IIf(FWBscore>=77.5,"Doing Great","Doing Great")))) AS Categories
FROM RESPONDENT;

现在,我不想将其除以他们的FWB得分,而是将其除以每个类别中回答的人数的百分比,最终结果看起来像这样

Doing Great  Getting by   Just coping
24%           15%            10%

任何帮助,将不胜感激。

解决方法

我建议仅使用子查询并进行聚合。我怀疑你想要

SELECT AVG(IIF(Category = "Having Trouble",100.0,0)) as having_trouble,AVG(IIF(Category = "Just Coping",0)) as just_coping,AVG(IIF(Category = "Getting By",0)) as getting_by,AVG(IIF(Category = "Doing Great",0)) as doing_great      
FROM (SELECT FWBScore,gender,respondentname,IIf(FWBScore <= 22.5,"Having Trouble",IIf(FWBScore >= 25 AND FWBScore <= 47.5,"Just Coping",IIf(FWBScore >= 50. AND FWBScore <= 75.0,"Getting By",IIf(FWBScore >= 77.5,"Doing Great","Doing Great")
                        )
                    )
                ) AS Category
      FROM RESPONDENT
     ) as r;

第一个音符。您可以使用iif()简化所有这些switch()条件。

第二注。严格来说,子查询不是必需的。您可以将条件移动到外部查询。我使用了子查询,因此可以保留原始逻辑。

编辑:

使用switch()

FROM (SELECT FWBScore,SWITCH(FWBScore <= 22.5,FWBScore >= 25 AND FWBScore <= 47.5,FWBScore >= 50. AND FWBScore <= 75.0,FWBScore >= 77.5,"Doing Great"
                   ) AS Category
      FROM RESPONDENT
     ) as r;