Sequence Iterator SQL Functions

The iterator functions are used to extract elements from sequences. The first and last functions return scalar values. The search() function is used to extract the specified range of elements from a materialized sequence.

seq_first_int( input ) Return the first value in the input sequence of integers
seq_first_real( input ) Return the first value in the input sequence of floating point numbers
seq_last_int( input ) Return the last value in the input sequence of integers
seq_last_real( input ) Return the last value in the input sequence of floating point numbers
seq_search( input, from, to ) Return the sequence with elements in the specified range from the materialized input sequence. The arguments from and to specify values in the object's sequence; boundary_from and boundary_to are boundary types typically specified as exdb.SeqIteratorBoundary.MCO_SEQ_BOUNDARY_INCLUSIVE or exdb.SeqIteratorBoundary.MCO_SEQ_BOUNDARY_EXCLUSIVE
seq_search_first( input, from, limit )

Combine the seq_search() and seq_first() to produce a sequence ordered according to the input sequence, starting with the value specified in the second argument from and having the maximum number of values specified in the third argument limit

seq_search_last( input, till, limit )

Combine the seq_search() and seq_last() to produce a sequence ordered according to the input sequence, starting with the value specified in the second argument till and having the maximum number of values specified in the third argument limit

seq_map( input1, input2 )

Extract from the input1 sequence elements with positions specified in the input2 sequence. (The positions should be provided in ascending order (these are typically obtained using methods filter_pos() or top_pos())

seq_project( des, src ) Project the materialized sequence src to the destination sequence dst.

 

Example

Following is an example code snippet demonstrating the first and last functions:

         
    -- _first_int, _last_int, _first_real, _last_real
            
    CREATE TABLE SimpleSequence11( testNumber unsigned(4) primary key,
        dVal1 sequence(double), dVal2 sequence(double) );
    INSERT INTO SimpleSequence(testNumber,iVal1,fVal1)
        VALUES(2,'{-3,-2,-1,0,1,2,3}','{11.1,17.7,-23.3,42.5}');
         
    SELECT seq_first_int(iVal1) AS "first_int", seq_last_int(iVal1) AS "last_int",
        seq_first_real(fVal1) AS "first_real", seq_last_real(fVal1) AS "last_real"
    FROM SimpleSequence WHERE testNumber = 2;
     
    first_int 
          last_int        
    first_real      
    last_real
    -------------------------------------------------------------------------
    -3 
         3 
          11.1000003814697        
    42.5
     

As explained in Analytics Functions Library Examples page, the data in the following example is taken from historical values from 2013 for IBM. The data is loaded into xSQL by running various scripts in directory samples/xsql/scripts/financial. To reproduce the example below run the g.bat (or g.sh on Linux systems) specifying the example number 6. For instance, with scripts/financial as the current working directory, simply type:

     
    g 6
     

Following is an example code snippet demonstrating the use of the search()function to extract the trading dates and volumes for January 2013:

         
    -- search
            
    SELECT symbol, seq_search(day, 20130101, 20130131) as Jan_13,
        volume@Jan_13 as "Volume_Jan_13"
    FROM Quote WHERE symbol = 'SYM0';
     
    symbol  
    Jan_13{}  
    Volume_Jan_13{}
    -------------------------------------------------------------------------
    SYM0    
    {20130101, 20130104, 20130106, 20130110, 20130123, 20130125, 20130129}  
    {335, 808, 45, 402, 732, 48, 805}