占比问题

我想算出各个分类的 畅、滞、平 各自占比, 不知道该怎么写公式

image.png


我的SQL

SELECT CATEGORY_ONE,LABELTYPE,ZTLB,TZX_EVALUATION,COUNT(1)

FROM  bi_goods_aistock

WHERE TZX_EVALUATION IS NOT NULL

GROUP BY CATEGORY_ONE,LABELTYPE,ZTLB,TZX_EVALUATION


image.png


FineReport 代码使我快乐 发布于 2018-12-14 16:59
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
代码使我快乐Lv3见习互助
发布于2018-12-18 15:54

之前的SQL因为必须把非聚合函数的字段 group by,导致得不到想要的值,却一直没想起可以用sum( ),over(partition by )分组


select z.*, sum(row_num) over(partition by category_one, labeltype, ztlb) total_num

, round(row_num / sum(row_num) over(partition by category_one, labeltype, ztlb), 2) rate_value

from

(

select category_one, labeltype, ztlb

  , decode(tzx_evaluation, '-1', '滞销', '0', '平销', '1', '畅销') || '占比' tzx_value

  , count(1) row_num

from bi_goods_aistock

where tzx_evaluation is not null

group by category_one, labeltype, ztlb, tzx_evaluation

) z

order by category_one, labeltype, ztlb, tzx_value;


最佳回答
0
孤陌Lv6资深互助
发布于2018-12-14 17:03(编辑于 2018-12-14 17:35)

导出内置数据集 发的论坛  一般是先求出总数量 然后再求占比

类似 这样的?效果图

image.png

image.png 数据图

  • 代码使我快乐 代码使我快乐(提问者) 公司的数据不方便发... 我试着LEFT JOIN 但是GROUP BY后值总是不对 所以向论坛的大佬求助 看能不能在帆软上面解决,或者问一下大家这时SQL应该怎样写
    2018-12-14 17:08 
  • 孤陌 孤陌 回复 代码使我快乐(提问者) 可以直接用公式来的 你可以直接建立一个内置数据集 然后数据你数据相试的就好了
    2018-12-14 17:14 
  • 孤陌 孤陌 回复 代码使我快乐(提问者) 你建立一个内置数据集 然后建一些测试数据 把这个模板发出来就好了
    2018-12-14 17:15 
  • 孤陌 孤陌 回复 代码使我快乐(提问者) 看看你的数据应该是类似这样的 然后想要的效果也是一样的吧
    2018-12-14 17:35 
  • 代码使我快乐 代码使我快乐(提问者) 刚刚有个比较急的BUG需要改, 页面我已经做出来了,也就是你这种,算个总数放在E列隐藏,然后D2/总数, 只是在纠结SQL该怎么写 ,或许我应该加个数据集做个关联查询试试
    2018-12-14 17:48 
最佳回答
0
aqiongLv2见习互助
发布于2018-12-14 17:07

image.png

  • 代码使我快乐 代码使我快乐(提问者) 应该不是sum (B2) 我需要算的是 大家居→设计款→新品 下所有畅滞平之和 大家居→设计款→经典品 下所有畅滞平之和 ....
    2018-12-14 17:12 
  • 2关注人数
  • 984浏览人数
  • 最后回答于:2018-12-18 15:54
    请选择关闭问题的原因
    确定 取消
    返回顶部