Greenplum中与Oracle类似的排序函数实现

create or replace function pgoramin
(
  is_val_1                varchar,
  is_val_2                varchar
)
returns varchar
as
$$
begin
  if (oracompat.nlssort(is_val_1,'C') >= oracompat.nlssort(is_val_2,'C')) then
    return is_val_2;
  else
    return is_val_1;
  end if;
end
$$
language plpgsql immutable strict;
create or replace function pgoramax
(
  is_val_1                varchar,
  is_val_2                varchar
)
returns varchar
as
$$
begin
  if (oracompat.nlssort(is_val_1,'C') >= oracompat.nlssort(is_val_2,'C')) then
    return is_val_1;
  else
    return is_val_2;
  end if;
end
$$
language plpgsql immutable strict;
drop aggregate if exists oracharmax(varchar);

create aggregate oracharmax (varchar)
(
  sfunc = pgoramax,
  stype = varchar,
  prefunc = pgoramax
);
drop aggregate if exists oracharmin(varchar);

create aggregate oracharmin (varchar)
(
  sfunc = pgoramin,
  stype = varchar,
  prefunc = pgoramin
);
时间: 2024-07-29 02:34:35

Greenplum中与Oracle类似的排序函数实现的相关文章

hll 估值插件 在Greenplum中的使用 以及 分布式聚合函数优化思路

背景 在大数据分析中,通常会有一些估值的需求,例如估计某个时间段有多少新增用户,估计某个时间段有多少用户. 常用的估值算法如HyperLogLog,还有一些其他的估值算法. 可以参考http://www.pipelinedb.com/ 我在几年前写过如何在PostgreSQL中使用HLL,请参考https://github.com/aggregateknowledge/postgresql-hllhttp://blog.163.com/digoal@126/blog/static/1638770

PHP中shuffle数组值随便排序函数用法_php技巧

本文实例讲述了shuffle数组值随便排序函数的用法,分享给大家供大家参考. 具体实例代码如下: 复制代码 代码如下: $typename=20; $rtitle='tt'; for( $i=0;$i<=20;$i++) {  $rtitle_rand = array($typename,$rtitle,$typename);  shuffle($rtitle_rand);//数组进行随机排序  echo $rtitle_rand['0'].'<br />'; } 希望本文所述对大家的P

Oracle数据库中对null值的排序及mull与空字符串的区别_oracle

order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前.所以,为何分析数据的直观性方便性,我们需要对null的记录值进行相应处理. 这是四种oracle排序中NULL值处理的方法:1.使用nvl函数语法:Nvl(expr1, expr2)     若EXPR1是NULL,則返回

Oracle中rownum在结果集中排序的使用

  Oracle中rownum在结果集中排序的使用 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明 有一张表:tb

oracle中sql 截取字段中的数字按条件排序

问题描述 oracle中sql 截取字段中的数字按条件排序 请教各位,这个sql怎么拼,我的字段(code)规则是:备案事项[2014]1,前面中文是固定的,然后是括起来的年份(可能是2013,2014,2015等等),后面是流水号(从1,2,3,...,10,..递增的),我想查出所有2013年的数据,要求按后面的流程号数字倒叙排列.恳求大神帮忙,谢谢! 解决方案 假设字段名是code SELECT code, substr(code,INSTR(code,'[', 0, 1)+1,INSTR

PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析_php技巧

sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于对数组单元从高到低进行排序并保持索引关系. ksort() 函数用于对数组单元按照键名从低到高进行排序. krsort() 函数用于对数组单元按照键名从高到低进行排序. sort() PHP sort() 函数用于对数组单元从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE. 注意:

Delphi中一个极快的正整数排序函数的实现

实现原理: 对比二进制位. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormC

如何在Delphi中调用oracle的存储过程返回数据集

oracle|存储过程|数据 选自CSDN http://search.csdn.net/Expert/topic/2280/2280860.xml?temp=2.169436E-02 论坛中JCC0128 网友的发言 [delphi+oracle报表解决方案(一)]delphi中调用oracle的存储过程(分带返回游标,不返回值两种)  关键字: delphi ,oracle存储过程,游标,返回数据集,报表 注:delphi 6+ oracle 8.1.6 一.创建包与包体 1.附:建表aac

SQL server排序函数详解

排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: 1. row_number 2. rank 3. dense_rank 4. ntile 一.row_number row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号.row_number函数的用法如下面的SQL语句所示: select row_number() over(order by field1) as row_number,* from t_