精华内容
下载资源
问答
  • java 计算占比 百分比

    千次阅读 2020-08-11 19:06:30
    //2、 计算占比 int num = Integer.parseInt(uintCardre.getUintPersonSum()); int allNum = Integer.parseInt(uintCardre.getUintAllPersonSum()); // 创建一个数值格式化对象 NumberFormat ...
    //2、 计算占比
    			int num = Integer.parseInt(uintCardre.getUintPersonSum());
    			int allNum = Integer.parseInt(uintCardre.getUintAllPersonSum());
    			// 创建一个数值格式化对象
    			NumberFormat numberFormat = NumberFormat.getInstance();
    			// 设置精确到小数点后2位
    			numberFormat.setMaximumFractionDigits(2);
    			String result = numberFormat.format((float)num/(float)allNum*100) + "%";
    			uintCardre.setProportion(result);//占比赋值
    
    展开全文
  • 动态计算占比——Power BI

    千次阅读 2019-08-10 21:38:33
    背景:某总公司旗下有若干子公司 分别位于上海(SH)、北京(BJ)、成都(CD)、广州(GZ)...下面介绍如何计算总体占比、分类占比、按筛选的总体占比、按筛选的分类占比 首先Power BI链接数据源(子公司的费用表)...
    • 背景:某总公司旗下有若干子公司
      分别位于上海(SH)、北京(BJ)、成都(CD)、广州(GZ)等
    • 每个子公司每年都会发生若干消费项目
      如:Information Technology、Travel and Entertainment、Forms and Supplies 等

    下面介绍如何计算总体占比、分类占比、按筛选的总体占比、按筛选的分类占比

    首先Power BI链接数据源(子公司的费用表), 做一个矩阵视图:
    在这里插入图片描述
    1、计算总体占比:

    总体占比 = DIVIDE(SUM('费用表'[cost]),CALCULATE(SUM('费用表'[cost]),ALL('费用表')))
    

    展开全文
  • 相关公式如下: 同比增长率计算公式 (当年值-上年值)/上年值x100% 环比增长率计算公式 (当月值-上月值)/上月值x100% 实现: select now_month, now_num, last_num, round( (now_num-last_num) / last_num, 2 ) as ...

    一、数据准备

    -- 创建表并插入数据
    CREATE TABLE `saleorder`  (
      `order_id` int ,
      `order_time` date ,
      `order_num` int
    ) 
    
    INSERT INTO `saleorder` VALUES 
    (1, '2020-04-20', 420),
    (2, '2020-04-04', 800),
    (3, '2020-03-28', 500),
    (4, '2020-03-13', 100),
    (5, '2020-02-27', 300),
    (6, '2020-01-07', 450),
    (7, '2019-04-07', 800),
    (8, '2019-03-15', 1200),
    (9, '2019-02-17', 200),
    (10, '2019-02-07', 600),
    (11, '2019-01-13', 300);
    


    查看表信息

    select * from saleorder;

    二、占比

    写法一:

    基本思路:用式内连接,外加嵌套找出分子分母,相除(最后要分组)

    SELECT
    	order_month,
    	num,
    	total,
    	round( num / total, 2 ) AS ratio 
    FROM
    (
    	-- 月统计
        SELECT 
    	    DATE_FORMAT(order_time,"yyyy-MM") AS order_month,
    	    sum( order_num ) AS num
        FROM    
    	saleorder 
        GROUP BY
    		DATE_FORMAT(order_time,"yyyy-MM")
    )t1,
    (
    	-- 年统计
        SELECT 
    	    year(order_time) AS order_year,
    	    sum( order_num ) AS total
        FROM 
    	saleorder 
        GROUP BY
    		year(order_time)
    )t2 
    where substr(t1.order_month,1,4) = t2.order_year;
    

    写法二:显示内连接

    基本思路:显示内联接,先分组、汇总–>笛卡尔积连接–>相除
    提示: 时间处理的时候除了用date_formate()也可以用substr()函数来截取年月日格式

    SELECT
    	order_month,
    	num,
    	total,
    	round(num/total,2) as ratio
    FROM
    (
        SELECT
    	    substr( order_time, 1, 7 ) AS order_month,
    	    sum( order_num ) AS num 
        FROM
    	    saleorder 
        GROUP BY
    	    substr( order_time, 1, 7 ) 
    ) t1
    INNER JOIN 
    (
        SELECT
    	    substr( order_time, 1, 4 ) AS order_year,
    	    sum( order_num ) AS total 
        FROM
    	    saleorder
        GROUP BY
    	    substr( order_time, 1, 4 ) 
    ) t2 
    ON substr( order_month, 1, 4 ) = t2.order_year ;
    

    写法三:开窗函数

    SELECT 
    	order_month,
    	num,
    	total,
    	round( num / total, 2 ) AS ratio 
    FROM 
    (
        select 
            substr(order_time, 1, 7) as order_month, 
            sum(order_num) over (partition by substr(order_time, 1, 7)) as num,
            sum( order_num ) over ( PARTITION BY substr( order_time, 1, 4 ) ) total,
            row_number() over (partition by substr(order_time, 1, 7)) as rk 
        from saleorder
    ) temp 
    where rk = 1;
    

    注意:

    (1) 时间处理的时候除了用date_formate()也可以用substr()函数来截取年月日格式
    (2)当我们求的占比分子分母没有时间维度只有数量的时候,我们可以采用on 1=1 来进行关联,构造成笛卡尔积
    

    三、环比

    与上年度数据对比称"同比",与上月数据对比称"环比"。
    相关公式如下:

    同比增长率计算公式
    (当年值-上年值)/上年值x100% 
    
    环比增长率计算公式
    (当月值-上月值)/上月值x100% 
    

    实现:

    select 
        now_month,
        now_num,
        last_num,
        round( (now_num-last_num) / last_num, 2 ) as ratio
    FROM 
    (
        select 
            now_month,
            now_num, 
            lag( t1.now_num, 1 ) over (order by t1.now_month ) as last_num 
        from 
        (
            select 
                substr(order_time, 1, 7) as now_month, 
                sum(order_num) as now_num 
            from saleorder 
            group by 
                substr(order_time, 1, 7) 
        ) t1
    ) t2;
    

    结果优化一下:

    select 
        now_month,
        now_num,
        last_num,
        -- round( (now_num-last_num) / last_num, 2 ) as ratio
        concat( nvl ( round( ( now_num - last_num ) / last_num * 100, 2 ), 0 ), "%" ) 
    FROM 
    (
        select 
            now_month,
            now_num, 
            lag( t1.now_num, 1 ) over (order by t1.now_month ) as last_num 
        from 
        (
            select 
                substr(order_time, 1, 7) as now_month, 
                sum(order_num) as now_num 
            from saleorder 
            group by 
                substr(order_time, 1, 7) 
        ) t1
    ) t2;
    

    四、同比

    与上年度数据对比称"同比",与上月数据对比称"环比"。
    相关公式如下:

    同比增长率计算公式
    (当年值-上年值)/上年值x100% 
    
    环比增长率计算公式
    (当月值-上月值)/上月值x100% 
    

    同比的话,如果每个月都齐全,都有数据lag(num,12)就ok.。我们的例子中只有19年和20年1-4月份的数据。这种特殊情况应该如何处理?

    写法一:本案例进行单独处理

    有4个月数据,我就lag(num,4)

    select 
        now_month,
        now_num,
        last_num,
        round( (now_num-last_num) / last_num, 2 ) as ratio 
    FROM 
    (
        select 
            now_month,
            now_num, 
            lag( t1.now_num, 4 ) over (order by t1.now_month ) as last_num 
        from 
        (
            select 
                substr(order_time, 1, 7) as now_month, 
                sum(order_num) as now_num 
            from saleorder 
            group by 
                substr(order_time, 1, 7) 
        ) t1
    ) t2;
    

    优化:
    对空值可以做一下优化处理,用到nvl()函数和lag()函数的第三个参数。

    select 
        now_month,
        now_num,
        last_num,
        nvl ( round( ( now_num - last_num ) / last_num, 2 ), 0 ) AS ratio 
    FROM 
    (
        select 
            now_month,
            now_num, 
            lag( t1.now_num, 4, 0 ) over (order by t1.now_month ) as last_num 
        from 
        (
            select 
                substr(order_time, 1, 7) as now_month, 
                sum(order_num) as now_num 
            from saleorder 
            group by 
                substr(order_time, 1, 7) 
        ) t1
    ) t2;
    

    写法二:通用方法

    基本思路:利用date_add()生成跨年时间

    SELECT
    	t1.now_month,
        CASE WHEN now_num IS NULL OR now_num = 0 
    	    THEN 0 ELSE now_num 
            END now_num,
        CASE WHEN last_num IS NULL OR last_num = 0 
            THEN 0 ELSE last_num 
    		END last_num,
        CASE WHEN last_num IS NULL OR last_num = 0 
            THEN 0 ELSE round( ( now_num - last_num ) / last_num, 2 ) 
    		END ratio 
    FROM
    (
    	SELECT
    		DATE_FORMAT( order_time, 'yyyy-MM' ) AS now_month,
    		sum( order_num ) AS now_num 
    	FROM
    		saleorder 
    	GROUP BY
    		DATE_FORMAT( order_time, 'yyyy-MM' ) 
    ) t1
    LEFT JOIN 
    (
    	SELECT
    		DATE_FORMAT( DATE_ADD( order_time, 365 ), 'yyyy-MM' ) AS now_month,
    		sum( order_num ) AS last_num 
    	FROM
    		saleorder 
    	GROUP BY
    	DATE_FORMAT( DATE_ADD( order_time, 365 ), 'yyyy-MM' ) 
    ) AS t2 ON t1.now_month = t2.now_month;
    

    优化:
    用nvl()代替case when

    SELECT
    	t1.now_month,
        nvl ( now_num, 0 ) AS now_num,
    	nvl ( last_num, 0 ) AS last_num,
    	nvl ( round( ( now_num - last_num ) / last_num, 2 ), 0 ) AS ratio 
    FROM
    (
    	SELECT
    		DATE_FORMAT( order_time, 'yyyy-MM' ) AS now_month,
    		sum( order_num ) AS now_num 
    	FROM
    		saleorder 
    	GROUP BY
    		DATE_FORMAT( order_time, 'yyyy-MM' ) 
    ) t1
    LEFT JOIN 
    (
    	SELECT
    		DATE_FORMAT( DATE_ADD( order_time, 365 ), 'yyyy-MM' ) AS now_month,
    		sum( order_num ) AS last_num 
    	FROM
    		saleorder 
    	GROUP BY
    	DATE_FORMAT( DATE_ADD( order_time, 365 ), 'yyyy-MM' ) 
    ) AS t2 ON t1.now_month = t2.now_month;
    

    展开全文
  • 计算一组数据的百分比占比,并保证百分比总和为1

    计算占比并保证百分比和为1

    常用场景

    • 用于动态计算页面元素的百分比占比
    • 可视化中扇形统计图的显示数值修正

    代码

         /**
         * 计算数组中各项的占比,保证百分比和等于1
         * @param arr 需要计算百分比的数组,传入时必须降序排序
         * @param precision  精度 比如 4   0.34567 =》 34.56
         *
         * arr降序排序,避免较小的值因为顺位补值导致大于原本比他大的值,
         * 至于原本相等的值因为顺位补值变得不相等则不考虑,
         * 比如[33,33,33]  => [34,33,33],将数值精确后势必三个百分比会不相等,
         * 【总和等于1】与【相等的值百分比也相等】在这里只保证第一种情况,
         * 毕竟百分比是看的与1的关系
         *
         * padEnd 属于es6 可能需要自己改写  '0'.padEnd(3,'-') => '0--'
         */
        function getPercent(arr, precision) {
            let total = 1,//总和
                percentArr,//每个模块的宽度百分比数组 精确到.00
                percentTotal = 0,//第一次计算百分比后,百分比总和
                dif,//第一次计算百分比总和后与实际和的差值,因为第一次计算百比试向下精确,所以和总会比实际和小
                len = arr.length,
                i = 0,
                result;
    
            //计算总和
            total = arr.reduce(function (a, b) {
                return a + b;
            });
            //简单过滤总和为零的情况
            if(total == 0){
                return
            }
            //计算百分比数组
            percentArr = arr.map(function (d, index) {
                let r = (d / total + '').substring(2, 2 + precision);//0.23456 => 2345
                r = +r.padEnd(precision, '0');//0.23 => 2300
                percentTotal += r;//累计百分比
                return +r;// 2345
            });
            //计算差值
            dif = Math.pow(10, precision) - percentTotal;
    
            //分配差值
            while (dif-- > 0) {
                percentArr[i++] += 1;
                i = i % len;
            }
            //转换为百分比字符串
            result = percentArr.map(function (per) {
                per += '';
                per=per.padStart(precision, '0');
                return parseFloat(per.replace(/(\d{2})/, '$1.')) + '%'
            });
            return result
        }
    
        console.log(getPercent([33, 33, 33], 4));
    
    展开全文
  • 下表是2020年3月各产品的销量数据表(product_sales),其中包含字段序号Id、产品product、销量Sales,现在需要编写一个查询语句,计算出各产品的销量占比和累计销量占比。第一步,计算总的产品销量select sum(sales)...
  • 例子: ``` >>>df=pd.DataFrame({ "A": ["foo", "foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar"], ...请问如何计算每个不同A值和B值下D所占的比例?能提供pivot_table实现最好,groupby也行。
  • 计算9月份type=''REQ"的占比、同比和环比; 说明: 环比指的是相邻两月(即9月份和8月份)进行比较; 同比指的是历史同期数据(即2019月9月与2018年9月)进行比较。 SQL语句如下: WITH total_t AS ( -...
  • 在工作中遇到一张统计表有多个字段,每个字段都有其筛选条件,写工作汇报需要每个字段的占比来进行分析数据背后的意义。如果按照原来的一次次点击每个字段的筛选条件查询将会耗费大量时间,运用数据透视表能够节约三...
  • oracle之占比函数

    2018-07-25 18:58:55
    oracle之占比函数 oracle之占比函数 oracle之占比函数
  • 利用group by 计算分类占比:对比 sql 和 python 数据有col_1,col_2,col_3如下: sql SELECT A.*,ROUND(COL3/TOTAL1,2) AS RATIO FROM (SELECT * FROM TTEST LEFT JOIN (SELECT COL1 AS TYPEB,SUM(COL3) AS ...
  • 计算占比总和为100整

    2021-03-10 13:49:43
    (data[key].toString().split('.')[1]).substring(0,2) : 0 total += parseInt(data[key]) temp.push({ name: key, value: parseInt(data[key]), dec: Number(num), }) } //计算差值 let ...
  • 计算每个分组的数量 ...计算占比,注意要*1.0,否则仍为整型,全为0 select parent_dict_code,count(data_dict_id),(select count(data_dict_id) from tb_data_dict) as sum_all,count(data_dict_id)/(select co
  • 计算组总和的占比 需求描述 需求:计算EMP表按照deptno分组,计算每组的SAL总和与所以记录总和中的占比 解决方法:通过每组SUM(SAL)窗口函数再除以记录总和来实现. 注: 数据库数据集SQL脚本详见如下链接地址 ...
  • sql中对某个字段进行占比计算

    千次阅读 2021-03-31 14:04:51
    SELECT a.wy_type , a.counts , b.sums , ROUND(CONVERT(DECIMAL(18, 2), a.counts) / b.sums * 100, 4) AS proportion FROM ( SELECT wy_type , COUNT(h.house_id) AS counts FROM p_building_house h
  • !... select * from(select a.*,rownum r from (select f.f_filename,count(f.f_filename) as amount,trunc(ratio_to_report(COUNT(1)) OVER()*100,2) as proportion from tb_busirecord b inner join tb_ex_train_...
  • sql 计算某个值的占比 在本文中,我将重点介绍使用简单的SQL SELECT语句对满足特定条件的表中的行数进行计数,并将结果按表的特定列分组。 这些都是SQL的基本概念,但是将它们混合使用就可以对关系数据库中存储的...
  • 相关公式如下: 同比增长率计算公式 (当年值-上年值)/上年值x100% 环比增长率计算公式 (当月值-上月值)/上月值x100% 实现: select now_month, now_num, last_num, round( (now_num-last_num) / last_num, 2 ) as ...
  • inplace=True) # 删除第一行 all_data.loc[:, 0] = all_data.loc[:, 0] / all_data.loc[:, 0].sum() # 计算比值 data_dict = all_data.to_dict()[0] series = dataframe.apply(set_value, axis=1) return series if...
  • Tableau系统中已经存在“期间”、“实利...方法:创建一个“计算”字段。 问题:聚和公式的写法逻辑不同,导致分析结果与实际工作大相径庭,甚至南辕北辙!!! 内容见下:   方法一:AVG([费用工资占比]) 其中,费用
  • 查资料发现echarts通过最大余额算法计算占比,记录下方便使用 getPercentValue() getPercentValue(valueList, idx, precision){// 传入参数(数组数据,数组下标,精度),底下有例子调用 // 判断是否为空 if (!...
  • 操作要求:使用模型构建器计算单类图斑占总面积的比值 使用软件:ArcMap 操作思路: 1、 常见思路一般是直接在要素图斑的属性表中进行融合——汇总面积——添加字段——计算字段。(此办法对于单个文件操作确实比...
  • select remark,count(remark) as amount from tb_busirecord where optcode = 'SEARCH' group by remark order by count(remark) desc 请问我怎么算出我所查出数据的数量占总数量的百分比呢?结果保留两位小数
  • 现在,我们实现这样一个功能,在数量旁边显示一个占比计算每一种订购方法所占的比值是多少 2. 新建数据项 使用total函数,默认会针对产品系列和订购方法进行汇总,分母,我们只针对产品系列汇总(每一行...
  • sql求占比,求完成度,比例百分比

    千次阅读 2020-04-01 14:00:50
    表格数据大概这样 status ... 需求大概就是占比完成度,从表格看 分组666的总共4条,完成2个,未完成2个 分组777的总共2条,完成1个,未完成1个 SELECT sum(case when status=0 then 1...
  • dax 分类占比的统计

    2018-10-17 16:07:23
    做统计的时候突然想到要做分类占比,记忆里要做$绝对值统计的度量值好像是要用到all,但是没法做到分类,只好百度……于是乎,这里做笔记mark一下,方便以后查找。大概思路不变,还是用all,然后用HASONEVALUE来做...
  • echarts 计算柱形图总和以及单个占比

    千次阅读 2020-06-15 14:38:22
    <script> var option = { xAxis: { data: ["易制毒订单","易制爆订单","剧毒订单","麻醉药品订单","精神药品订单","其它"] }, yAxis: { splitLine:{ show:false} //改设置不显示坐标区域内的y轴分割线 ...
  • 法一:数据项自己计算 bal/total(bal for report) 法二:cognos自带函数 percentage percentage(bal) 2.占上级的比 以下例子是非度量的做法,报表为交叉表 [bal]/value(tuple(parent(currentMember([级别维度])),...
  • 通过控制蓝色矩形长度来确定占比计算公式左右两边均为 rec_b.width*lbl_a_val/(lbl_a_val+lbl_b_val)) lbl_a_val,用rec_b来控制rec_a的总长度 投B时,lbl_a_val值不变,而分布中lbl_b_val变化了,所有rec_a变短
  • 用sql语句求出占比,并且后面加%比 cast(cast(round(count(*)*100/((select count(*) from (select

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,549
精华内容 21,019
关键字:

如何计算占比