Tableau计算字段问题:各州医保覆盖率计算异常求助
为啥所有州都显示0.2?
你写的公式sum(Yearly coverage per state)/sum(Health insurance coverage)说白了就是:
sum(Health insurance coverage / 5) / sum(Health insurance coverage)
如果每个州的Health insurance coverage是5年的总覆盖量(单条记录),那sum(Health insurance coverage /5)就等于sum(Health insurance coverage)/5,算下来就是「总覆盖量除以5」再除以「总覆盖量」,结果自然是1/5=0.2,所有州都一样是因为逻辑本身就有问题,不是工具的bug。
正确的医保覆盖率该怎么算?
医保覆盖率核心是覆盖人数和该州总人口的比值,你得先确认数据表有没有各州总人口的字段(比如叫State Total Population),然后按需求选下面的公式:
1. 年度平均医保覆盖率
用你已经做的年度平均覆盖量,算年度平均覆盖人数占总人口的比例:
sum(Yearly coverage per state) / sum(State Total Population)
2. 5年总医保覆盖率
直接用5年总覆盖量算占总人口的比例:
sum(Health insurance coverage) / sum(State Total Population)
要是你真的需要年度和总覆盖量的比例(不推荐,没业务意义)
如果你的需求就是算年度平均覆盖量占5年总覆盖量的比例,那这个数本来就是固定的0.2,因为年度平均就是总覆盖量除以5,结果合理但显然不是你想要的“覆盖率”,说明你可能搞混了覆盖率的定义。
为啥去掉sum后结果是0?
去掉sum用Yearly coverage per state/Health insurance coverage得到0,大概率是整数除法搞的鬼。比如Health insurance coverage是整数类型,除以5之后如果结果是小数却被转成了整数,再除以原整数就会得到0。解决办法是把字段转成浮点型再算,比如把Yearly coverage per state的公式改成:
div(cast(Health insurance coverage as float), 5)
再用不带sum的行级别计算,就能得到正确的0.2而不是0,但还是那句话,这个比例没实际业务价值。
内容的提问来源于stack exchange,提问作者Ijeoma Daimonds

