|
LAG and LEAD provide a comparison between 2 rows in a table without requiring
a self join.
LAG() provides access to a prior row
LEAD() provides access to a row after the current position
These functions are position, not value based
Syntax
LEAD | LAG (<exp1> [,<offset> [, <default>]]) OVER ([PARTITION BY <exp2> [,…]]) ORDER BY <exp3> [ASC|DESC] [NULLS FIRST | NULLS LAST] [,…])
<offset> is optional and defaults to 1
<default> is optional and is the value returned if the <offset>
falls outside the bounds of the dataset.
Example:
SELECT customer_id, order_date, sum(Order_amt) As CurrentOrder, LAG(SUM(Order_amt),1) OVER (PARTITION BY customer_id ORDER BY payment_date ) AS LastOrder FROM OrderBook WHERE order_date > '01-JAN-03' GROUP BY customer_id, order_date
Case Function
A very flexible method of grouping data into even or unevenly sized buckets.
Very similar to DECODE
Syntax:
CASE WHEN <cond1> THEN <Value1> WHEN <cond2> THEN <Value2> [ELSE Value n ] END
A single CASE statement can be selected (along
with other columns), resulting in a vertical list of data buckets. Alternatively
several case statements can be summed to display totals in a horizontal row:
SUM(CASE WHEN SUM(amount) BETWEEN 0 AND 49 THEN 1 ELSE 0 END) AS "0-49", SUM(CASE WHEN SUM(amount) BETWEEN 50 AND 100 THEN 1 ELSE 0 END) AS "50-100",
We herd sheep, we drive cattle, we lead people. Lead
me, follow me, or get out of my way. ~ George
S. Patton
Back to Analytic features
List of all functions