请问这个问题该怎么做?急!!!在线等!!!

时间:2022-11-20 10:51:27

在交叉报表中,我想实现工序合格率的乘积,如下图中
99.70*99.98%*99.85%*99.81%*98.90%=?
99.51%*99.82%*99.35%*99.92%=?

请问这个问题该怎么做?急!!!在线等!!!

请高手指点。

26 个解决方案

#1


加个计算列
exp(sum(log(工序合格率) for group))

#2


引用 1 楼 jimwoo 的回复:
加个计算列
exp(sum(log(工序合格率) for group))


谢谢。我先试试

#3


我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

#4


计算列的名称叫什么?或者把工序合格率的表达式代替工序合格率试试看

#5


引用 4 楼 jimwoo 的回复:
计算列的名称叫什么?或者把工序合格率的表达式代替工序合格率试试看


工序合格率的计算列名字是"compute_1",所以我添加计算域的时候写成“exp(sum(log(compute_1) for group 1))”,可是这样也不行。compute_1.的表达式为 "(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount",写成“exp(sum(log("(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount) for group 1))”,也不行,结果都是"1".

#6


重做一个dw, 把合格率的计算放到sql语句中处理, 再用1楼的计算公式试试

#7


引用 6 楼 novicecj 的回复:
重做一个dw, 把合格率的计算放到sql语句中处理, 再用1楼的计算公式试试

谢谢了,大侠。我先试下。我等了一下午了,终于有人回复我的,感动ing

#8


大侠,我是用交叉表做的。合格率的计算怎么在sql中做啊?

#9


引用 3 楼 panyifeng 的回复:
我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

会不会是四舍五入了?

#10


引用 9 楼 jimwoo 的回复:
引用 3 楼 panyifeng 的回复:
我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

会不会是四舍五入了?

我没有进行多余的设置啊。。。我都没试过四舍五入。

#11


这个问题困扰我好几天了,请各路大侠给我一点建议啊,谢谢了

#12


这几天我也一直在关注这贴子,也不知道怎么整;
实在不行就用程序来计算再写回对应的单元格吧.

#13


引用 12 楼 wag_enu 的回复:
这几天我也一直在关注这贴子,也不知道怎么整;
实在不行就用程序来计算再写回对应的单元格吧.

谢谢大侠对这个帖子的关注,我本来也想照你的方法做的,但是领导说要做成动态的。所以就没办法,问他他也不知道怎么做。现在就是说因为这个问题我后面的功能都做不下去了。真是急啊!

#14


在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

#15


引用 14 楼 jimwoo 的回复:
在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

我在“工序合格率”中去掉了%后还是如此。我的qq:317858068。请大侠指点。

#16


引用 14 楼 jimwoo 的回复:
在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

jimwoo:能把你试成功的例子发给我吗?panyifeng1987@163.com,欢迎交流

#17


快被逼上绝路了,csdn上的大侠们,帮帮我吧。55555

#18


存储过程很轻松就可以实现,你反正都是做报表

#19


引用 18 楼 ccy_qty 的回复:
存储过程很轻松就可以实现,你反正都是做报表

存储过程用得不是很熟练,所以没用。我报表之类的都设计好了,就差这个计算,好多天了,囧。

#20


各位大侠,麻烦帮我看看啊。jimwoo:你还在吗?我的qq:317858068

#21


不知道这个行不行
avg(  compute_1  for group 1 ) * count(  compute_1  for group 1 )

#22


应该是这个,求次幂
avg(  compute_1  for group 1 ) ^ count(  compute_1  for group 1 )

#23


引用 22 楼 xys_777 的回复:
应该是这个,求次幂
avg(  compute_1  for group 1 ) ^ count(  compute_1  for group 1 )


终于解决了。谢谢大侠,小弟万分感谢。泪奔ing。

#24


当我第二天再输入一些数据之后,统计出来的乘积就不准确了,请大侠们继续指点,具体请看帖子
http://topic.csdn.net/u/20091210/13/55b2e85f-1244-4861-883e-156958c6e572.html

#25


这么说比较难理解,举个例子就清楚了。
比如,有个group上有个sum的计算列compute_1:"sum(c1 for group 1)"
在summary里有个sum  的计算列compute_2:"sum(compute_1 for all)"

这种情况,pb的datawindow的这个compute_2计算列得到焦点时,类似于调用函数一样调用了compute_1的算法


引用 16 楼 xys_777 的回复:
pb的计算列中调用计算列,需要符合函数调用关系的,可以理解为一般的函数调用

引用 15 楼 xys_777 的回复:
avg(  compute_1  for group 1 )这句应该也有些问题,

需要看compute_1的公式

#26


引用 25 楼 xys_777 的回复:
这么说比较难理解,举个例子就清楚了。
比如,有个group上有个sum的计算列compute_1:"sum(c1 for group 1)"
在summary里有个sum  的计算列compute_2:"sum(compute_1 for all)"

这种情况,pb的datawindow的这个compute_2计算列得到焦点时,类似于调用函数一样调用了compute_1的算法


引用 16 楼 xys_777 的回复:
pb的计算列中调用计算列,需要符合函数调用关系的,可以理解为一般的函数调用

引用 15 楼 xys_777 的回复:
avg(  compute_1  for group 1 )这句应该也有些问题,

需要看compute_1的公式


我就是这种一直调用的嵌套,但不知道为什么就是有错误。

#1


加个计算列
exp(sum(log(工序合格率) for group))

#2


引用 1 楼 jimwoo 的回复:
加个计算列
exp(sum(log(工序合格率) for group))


谢谢。我先试试

#3


我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

#4


计算列的名称叫什么?或者把工序合格率的表达式代替工序合格率试试看

#5


引用 4 楼 jimwoo 的回复:
计算列的名称叫什么?或者把工序合格率的表达式代替工序合格率试试看


工序合格率的计算列名字是"compute_1",所以我添加计算域的时候写成“exp(sum(log(compute_1) for group 1))”,可是这样也不行。compute_1.的表达式为 "(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount",写成“exp(sum(log("(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount) for group 1))”,也不行,结果都是"1".

#6


重做一个dw, 把合格率的计算放到sql语句中处理, 再用1楼的计算公式试试

#7


引用 6 楼 novicecj 的回复:
重做一个dw, 把合格率的计算放到sql语句中处理, 再用1楼的计算公式试试

谢谢了,大侠。我先试下。我等了一下午了,终于有人回复我的,感动ing

#8


大侠,我是用交叉表做的。合格率的计算怎么在sql中做啊?

#9


引用 3 楼 panyifeng 的回复:
我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

会不会是四舍五入了?

#10


引用 9 楼 jimwoo 的回复:
引用 3 楼 panyifeng 的回复:
我这个工序合格率也都是通过计算域计算出来的。然后我添加一个计算域,输入“exp(sum(log(工序合格率) for group 1))”,其中的“工序合格率”的表达式为“(w_input_amount-crosstabsum(1, 2, "@wl"))/w_input_amount”。可是这样的话计算出来结果都是1,什么原因啊?

会不会是四舍五入了?

我没有进行多余的设置啊。。。我都没试过四舍五入。

#11


这个问题困扰我好几天了,请各路大侠给我一点建议啊,谢谢了

#12


这几天我也一直在关注这贴子,也不知道怎么整;
实在不行就用程序来计算再写回对应的单元格吧.

#13


引用 12 楼 wag_enu 的回复:
这几天我也一直在关注这贴子,也不知道怎么整;
实在不行就用程序来计算再写回对应的单元格吧.

谢谢大侠对这个帖子的关注,我本来也想照你的方法做的,但是领导说要做成动态的。所以就没办法,问他他也不知道怎么做。现在就是说因为这个问题我后面的功能都做不下去了。真是急啊!

#14


在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

#15


引用 14 楼 jimwoo 的回复:
在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

我在“工序合格率”中去掉了%后还是如此。我的qq:317858068。请大侠指点。

#16


引用 14 楼 jimwoo 的回复:
在交叉表里试过了,可以计算。
你的合格率一栏里面不是还有百分号吗?那这一栏就不是数字类型的了?

jimwoo:能把你试成功的例子发给我吗?panyifeng1987@163.com,欢迎交流

#17


快被逼上绝路了,csdn上的大侠们,帮帮我吧。55555

#18


存储过程很轻松就可以实现,你反正都是做报表

#19


引用 18 楼 ccy_qty 的回复:
存储过程很轻松就可以实现,你反正都是做报表

存储过程用得不是很熟练,所以没用。我报表之类的都设计好了,就差这个计算,好多天了,囧。

#20


各位大侠,麻烦帮我看看啊。jimwoo:你还在吗?我的qq:317858068

#21


不知道这个行不行
avg(  compute_1  for group 1 ) * count(  compute_1  for group 1 )

#22


应该是这个,求次幂
avg(  compute_1  for group 1 ) ^ count(  compute_1  for group 1 )

#23


引用 22 楼 xys_777 的回复:
应该是这个,求次幂
avg(  compute_1  for group 1 ) ^ count(  compute_1  for group 1 )


终于解决了。谢谢大侠,小弟万分感谢。泪奔ing。

#24


当我第二天再输入一些数据之后,统计出来的乘积就不准确了,请大侠们继续指点,具体请看帖子
http://topic.csdn.net/u/20091210/13/55b2e85f-1244-4861-883e-156958c6e572.html

#25


这么说比较难理解,举个例子就清楚了。
比如,有个group上有个sum的计算列compute_1:"sum(c1 for group 1)"
在summary里有个sum  的计算列compute_2:"sum(compute_1 for all)"

这种情况,pb的datawindow的这个compute_2计算列得到焦点时,类似于调用函数一样调用了compute_1的算法


引用 16 楼 xys_777 的回复:
pb的计算列中调用计算列,需要符合函数调用关系的,可以理解为一般的函数调用

引用 15 楼 xys_777 的回复:
avg(  compute_1  for group 1 )这句应该也有些问题,

需要看compute_1的公式

#26


引用 25 楼 xys_777 的回复:
这么说比较难理解,举个例子就清楚了。
比如,有个group上有个sum的计算列compute_1:"sum(c1 for group 1)"
在summary里有个sum  的计算列compute_2:"sum(compute_1 for all)"

这种情况,pb的datawindow的这个compute_2计算列得到焦点时,类似于调用函数一样调用了compute_1的算法


引用 16 楼 xys_777 的回复:
pb的计算列中调用计算列,需要符合函数调用关系的,可以理解为一般的函数调用

引用 15 楼 xys_777 的回复:
avg(  compute_1  for group 1 )这句应该也有些问题,

需要看compute_1的公式


我就是这种一直调用的嵌套,但不知道为什么就是有错误。