//--线条 //3-----点击文字特效---

函数!!
时间函数:DAYS_BETWEEN、ADD_DAYS、FORMAT、CURRENT_DATE、YEAR、MONTH等。
字符串函数:CONCAT、TRIM、LENGTH、REPLACE、STRING_AGG、SUBSTRING等;

 


数字函数: ROUND、FLOOR、RAND、ABS等

 

视图!!!

如果要创建计算视图写sql脚本的那种,在新建的时候就要选对类型了!

 

视图创建知识参考链接:HANA Studio-建模-长篇_xiaomici的博客-CSDN博客_hana studio、[Hana学习笔记]Hana自定义函数_XLevon的博客-CSDN博客_hana函数

开窗函数!!!也很重要!!!

以下有一个表格↓

 

进行分组排序和不分组排序↓ 首先是不重复排名序号的排名!!!

 

以下是有重复值的序号排名↓

 

各种参数解释参考:开窗函数lag()_lead()(二)_妙趣生花的博客-CSDN博客_开窗函数lead

原表:

 

参数:

1 LAG

 

2 LEAD

 

select lead(start_time,1,-3)over(order by start_time) from exam_record;

3 dense_rank() over():连续排序。对相等的值排名相同,但序号从1到n连续。如果有两个人都排在第一名,则排在第2名(假设仅有1个第二名)的人是第3个人。

4 NTILE:可以看作是把有序的数据集合平均分配到指定的数量n的桶中,将桶号分配给每一行,排序对应的数字为桶号。如果不能平均分配,则较小桶号的桶分配额外的行,并且各个桶中能放的数据条数最多相差1。

5 PERCENT_RANK

 

6 PERCENTILE_CONT

7 PERCENTILE_DISC和CUME_DIST

cume_dist 返回小于等于当前值的行数/分组内总行数
比如,我们可以统计小于等于当前薪水的人数,所占总人数的比例

8 RANDOM_PARTITION

9 FIRST_VALUE 和 LAST_VALUE 函数
FIRST_VALUE 取分组内排序后,截止到当前行,第一个值

LAST_VALUE函数则相反:
LAST_VALUE 取分组内排序后,截止到当前行,最后一个值

10 SERIES_FILTER

11 WEIGHTED_AVG

※这里有个开窗函数的例子,关于 最近七天平均值的。 ↓

 

Hana自定义函数参考:[Hana学习笔记]Hana自定义函数_XLevon的博客-CSDN博客_hana函数
创建语法:

create function 函数名
(
in 参数 参数类型
)
returns 返回值 返回值类型
language sqlscript as
begin
SQL语句
end;
实际案例:
create function FV_MARA_MATNR
(
in i_matnr nvarchar(40) --输入物料代码
)
returns o_matnr nvarchar(40) --输出物料代码
language sqlscript as
begin
if(:i_matnr <> '') then
select case when length(replace_regexpr('[^0-9]' in :i_matnr))=length(:i_matnr) then
left('000000000000000000',18-length(:i_matnr))||(:i_matnr) else :i_matnr end
into o_matnr
from dummy;
else
select :i_matnr into o_matnr from dummy;
end if;
end;
SAP Hana存储过程:SAP Hana存储过程_黑斯汀的博客-CSDN博客_hana执行存储过程

create procedure sp_test (in date varchar(10),out a1 t_a1) --参数定义,格式为:(IN|OUT|INOUT VAR_NAME VAR_TYPE),多个参数之间用,相隔,可不定义;注意:定义了with result view 必须有out参数,且必须为table类型
language sqlscript --指定存储过程实现的程序语言,默认为: SQLSCRIPT,可不定义
sql security invoker --指定存储过程的安全模式,默认: DEFINER,可不定义
reads sql data --存储过程为只读的,不能包含DDL与DML(INSERT、UPDATE、DELETE)语句,如果调用其他存储过程,则被调用过程也是只读的。可不定义
with result view test2 --将只读取存储过程的输出看做结果视图,可以被其他查询SQL用来查询,此时存储过程就像一个表或视图。可不定义
as
begin
a1 =
with a as (
select * from a1 where date = :date --引用变量需要使用: + 变量名称
)
SELECT * FROM a
;
end;

posted on 2022-07-22 11:18  雨水果冻  阅读(36)  评论(0编辑  收藏  举报