求教SAS中LAG函数的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教SAS中LAG函数的使用相关的知识,希望对你有一定的参考价值。
参考技术A x>=1时,f(x)=log2(x)是单调增的,最小值为f(1)=0x<1时,f(x)=x+c也是单调增的,最大值为f(1-)=1+c
要使函数在R上单调增,则须有1+c<=0,得c<=-1
因此c=-1是充分但不必要条件。
选A
用换底公式:
a=ln6/ln3=(ln3+ln2)/ln3=1+ln2/ln3
b=ln10/ln5=(ln5+ln2)/ln5=1+ln2/ln5
c=ln14/ln7=(ln7+ln2)/ln7=1+ln2/ln7
因为0<ln3<ln5<ln7, ln2>0
所以ln2/ln3>ln2/ln5>ln2/ln7
即a>b>c
选D本回答被提问者采纳
如何在 oracle pl sql 中使用 LAG 函数,直到到达非零或最后一行?
【中文标题】如何在 oracle pl sql 中使用 LAG 函数,直到到达非零或最后一行?【英文标题】:How to use LAG function in oracle pl sql until non zero or last row is reached? 【发布时间】:2016-02-20 20:06:13 【问题描述】:我想以这样一种方式为表列编写 LAG 函数,如果列值为零,它应该滞后该 id 的值,如果前一行再次为零,它应该再次 LAG,直到它到达非零行或最后一行行请帮助。在此先感谢
【问题讨论】:
请显示示例、数据预期输出以及您尝试过的内容。 【参考方案1】:两次调用同一个表不是更简单吗(例如,称它们为 A 和 B)。
在B中,过滤掉所有值为零的行,然后做一个简单的LAG(field,1)。
然后只需加入这两个表。
瞧!
【讨论】:
【参考方案2】:将LAG() IGNORE NULLS ...
与CASE
语句结合使用:
LAG(
CASE COLUMN_NAME
WHEN 0
THEN NULL
ELSE COLUMN_NAME
END
) IGNORE NULLS OVER ( ORDER BY OTHER_COLUMN )
例如:
WITH DATA ( id, value ) AS (
SELECT 1, 1 FROM DUAL UNION ALL
SELECT 2, 0 FROM DUAL UNION ALL
SELECT 3, 0 FROM DUAL UNION ALL
SELECT 4, 2 FROM DUAL UNION ALL
SELECT 5, 0 FROM DUAL
)
SELECT id,
value,
LAG(
CASE VALUE
WHEN 0
THEN NULL
ELSE VALUE
END
) IGNORE NULLS
OVER ( ORDER BY id )
AS prev_non_zero_value
FROM DATA;
输出:
ID VALUE PREV_NON_ZERO_VALUE
---------- ---------- -------------------
1 1
2 0 1
3 0 1
4 2 1
5 0 2
【讨论】:
以上是关于求教SAS中LAG函数的使用的主要内容,如果未能解决你的问题,请参考以下文章