c*******r 发帖数: 3289 | 1 一个貌似简单的问题,可是我找不到连乘的函数:一个表,有region, year_month,
pct字段,用来记录每个地区每月销售比上月变化百分比。需要的输出是按地区按年计
算每年递增百分比,
select multiply(1+pct)
from table
group by region, year(year_month)
有没有这样一个multiply的函数? |
B*****g 发帖数: 34098 | 2 用LOG
【在 c*******r 的大作中提到】 : 一个貌似简单的问题,可是我找不到连乘的函数:一个表,有region, year_month, : pct字段,用来记录每个地区每月销售比上月变化百分比。需要的输出是按地区按年计 : 算每年递增百分比, : select multiply(1+pct) : from table : group by region, year(year_month) : 有没有这样一个multiply的函数?
|
c*******r 发帖数: 3289 | 3 就是哦,怎么没想到,祝楼上找到和vivian chow一样美的mm |
n****f 发帖数: 905 | |
B*****g 发帖数: 34098 | 5 是LOG,LAG太麻烦
【在 n****f 的大作中提到】 : 老北太不认真了。 不是 LOG, 是 LAG. : http://www.techonthenet.com/oracle/functions/lag.php
|
c*******r 发帖数: 3289 | |
z**********8 发帖数: 2049 | |
B*****g 发帖数: 34098 | 8 10^(SUM(log()))
【在 z**********8 的大作中提到】 : 对数函数?求强解。
|
z**********8 发帖数: 2049 | 9 result set
region year ammunt growthrate
boston 2000 100 0
boston 2001 200 50%
boston 2002 250 25%
nyc 2000 50 0
nyc 2001 100 50%
nyc 2002 200 50%
...
growthrate如何计算?请教。 当然是在sql里面。 |
B*****g 发帖数: 34098 | 10 一个公司的?
【在 z**********8 的大作中提到】 : result set : region year ammunt growthrate : boston 2000 100 0 : boston 2001 200 50% : boston 2002 250 25% : nyc 2000 50 0 : nyc 2001 100 50% : nyc 2002 200 50% : ... : growthrate如何计算?请教。 当然是在sql里面。
|
|
|
z**********8 发帖数: 2049 | 11 不是啊。类似还有每年的累加问题
2001 100 100
2002 50 150
2003 70 220
。。。
谢谢
【在 B*****g 的大作中提到】 : 一个公司的?
|
B*****g 发帖数: 34098 | 12 原理就是只有叠加。没有叠乘
把要叠乘的值先取log
然后再叠加
最后power(10,叠加值)
【在 z**********8 的大作中提到】 : 不是啊。类似还有每年的累加问题 : 2001 100 100 : 2002 50 150 : 2003 70 220 : 。。。 : 谢谢
|
z**********8 发帖数: 2049 | 13 完了,对数函数全还给老师了。依然不懂
我用lag好像还好懂点。估计performance肯定不如log.
【在 B*****g 的大作中提到】 : 原理就是只有叠加。没有叠乘 : 把要叠乘的值先取log : 然后再叠加 : 最后power(10,叠加值)
|
c*******r 发帖数: 3289 | 14
select power(10, sum(log(growth_rate) ) )
group by region, year
because log (x * y) = log(x) + log(y),
(x * y) = 10 ^ (log(x) + log(y))
the idea is to turn multiplication to addition, which can use a sum()
function.
【在 z**********8 的大作中提到】 : 完了,对数函数全还给老师了。依然不懂 : 我用lag好像还好懂点。估计performance肯定不如log.
|
z**********8 发帖数: 2049 | 15 再请教,
annual growthrate = power (10, sum(log(growth_rate)))?!
THANKS
【在 c*******r 的大作中提到】 : : select power(10, sum(log(growth_rate) ) ) : group by region, year : because log (x * y) = log(x) + log(y), : (x * y) = 10 ^ (log(x) + log(y)) : the idea is to turn multiplication to addition, which can use a sum() : function.
|
z**********8 发帖数: 2049 | 16 是不是,这是一个PIVOT TABLE的案例,如果把它EXPORT到excel/access,就比较容易
处理了。要作一个pivot chart也不难。(不管是AMOUNT或者GROWTH RATE的比较)
如果,是知道每个月的sale's amount,如何求monthly grwoth rate?in ms sql. |
n****f 发帖数: 905 | 17
我笨, 还是看不懂。 下面 growthrate 的结果, 是如何用 LOG 在 SQL 里面实现?
请受累把 SQL 写全。 谢谢!
region year ammunt growthrate
boston 2000 100 0
boston 2001 200 50%
boston 2002 250 25%
nyc 2000 50 0
nyc 2001 100 50%
nyc 2002 200 50%
【在 B*****g 的大作中提到】 : 是LOG,LAG太麻烦
|
z**********8 发帖数: 2049 | 18 我这个例子不用log吧。可能用lag+merge可以对付了。不知道是否还有更好的方法。
要是老板催得急,就直接给它export到excel立马就出来了。呵呵
?
【在 n****f 的大作中提到】 : : 我笨, 还是看不懂。 下面 growthrate 的结果, 是如何用 LOG 在 SQL 里面实现? : 请受累把 SQL 写全。 谢谢! : region year ammunt growthrate : boston 2000 100 0 : boston 2001 200 50% : boston 2002 250 25% : nyc 2000 50 0 : nyc 2001 100 50% : nyc 2002 200 50%
|
B*****g 发帖数: 34098 | 19 不知道你要怎么算
【在 z**********8 的大作中提到】 : 我这个例子不用log吧。可能用lag+merge可以对付了。不知道是否还有更好的方法。 : 要是老板催得急,就直接给它export到excel立马就出来了。呵呵 : : ?
|
z**********8 发帖数: 2049 | 20 我的办法很土阿。或者就export到excel去,就完全解决了-subtotal,或者pivot
table都可以。
要是在ms sql,
先用lag(amount)把前面和后面的两个amount对位,每次只能一个region, 然后,就用
merge把其它regions,同样处理。这样应该就出来了吧。不过我瞧着也不对。哈哈
【在 B*****g 的大作中提到】 : 不知道你要怎么算
|