The Power of SQL Aggregate Window Functions
The Power of SQL Aggregate Window Functions
AGGREGATION ON SQL
-- Running Totals
SELECT order_date,
sum(order_amount) OVER (ORDER BY order_date)
AS running_total
FROM orders;
-- Moving Average
SELECT order_date,
AVG(order_amount) OVER (ORDER BY order_date
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS
moving_average
FROM orders;
-- Rank
SELECT product_name, product_price, DENSE_RANK()
OVER (ORDER BY product_price DESC) AS rank
FROM products;
-- Percent Rank
SELECT product_name, product_price, PERCENT_RANK()
OVER (ORDER BY product_price DESC) AS
percent_rank
FROM products;
-- Cumulative Distribution
SELECT product_name, product_price, CUME_DIST()
OVER (ORDER BY product_price) AS
cumulative_dist
FROM products;
-- Ntile
SELECT product_name, product_price,
NTILE(4) OVER (ORDER BY product_price)
AS quartile
FROM products;
-- Percentile Cont
SELECT product_name, product_price,
PERCENTILE_CONT(0.5) WITHIN GROUP
(ORDER BY product_price) OVER ()
AS median_price
FROM products;
-- Concatenation
SELECT department, employee_name,
STRING_AGG(phone_number, ', ') WITHIN
GROUP (ORDER BY phone_number) AS
phone_list
FROM employees
GROUP BY department, employee_name;