函数!!
时间函数: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;
本文来自博客园,作者:雨水果冻,转载请注明原文链接:https://www.cnblogs.com/yushuiguodong/p/16505097.html