Académique Documents
Professionnel Documents
Culture Documents
Advanced SQL
SELECT
ename, sal, deptno
,COUNT(deptno) OVER ( ) AS
Total_Count
FROM samples.emp WHERE Deptno IN
(10,30)
ORDER BY 3,1;
SELECT
ename, sal, deptno
FROM samples.emp WHERE Deptno IN
(10,30)
WITH COUNT (Deptno) (TITLE 'Total_Count')
ORDER BY 3,1;
SELECT
ename, sal, deptno
,COUNT(deptno) OVER (PARTITION BY
Deptno)
AS Dept_Count
FROM samples.emp WHERE Deptno IN
(10,30);
SELECT
ename, sal, deptno
FROM samples.emp WHERE Deptno IN (10,30)
WITH COUNT(Deptno ) (TITLE 'Total_Count') by deptno;
into
into
into
into
into
into
salestbl
salestbl
salestbl
salestbl
salestbl
salestbl
values
values
values
values
values
values
(1001,'A',5674.00);
(1001,'B',7634.00);
(1001,'A',2634.00);
(1001,'C',1674.00);
(1001,'A',6000.00);
(1001,'B',2100.00);
insert
insert
insert
insert
insert
into
into
into
into
into
salestbl
salestbl
salestbl
salestbl
salestbl
values
values
values
values
values
(1002,'A',5674.00);
(1002,'B',5674.00);
(1002,'A',2000.00);
(1002,'C',5674.00);
(1002,'C',3000.00);
Teradata Extension
Alternative
An alternative Teradata shortcut extension is the CSUM
function which can produce the same results, however
does not comply with ANSI standards.
SELECT salesdate
, sales , EXTRACT(MONTH FROM salesdate) AS Mon
,SUM(sales) OVER (PARTITION BY Mon ORDER BY
salesdate
ROWS UNBOUNDED PRECEDING) AS "Csum"
FROM samples.daily_sales WHERE itemid = 10
AND EXTRACT( YEAR FROM salesdate) = 1999 AND
Mon in (1,2);
SELECT salesdate
,CAST(itemid AS BYTEINT) (FORMAT '99') AS "itemid"
,sales
,CSUM(sales, salesdate) AS "CSUM"
,MSUM(sales, 3, salesdate) AS "MSUM"
,MDIFF(sales, 3, salesdate) AS "MDIFF"
,MAVG(sales, 3, salesdate) AS "MAVG"
FROM samples.daily_sales WHERE salesdate BETWEEN 990101
AND 991231;
Ordered Analytic
Function Types
Timestamp
Sub Queries
Correlated Subquery
The inner query and the outer query are
interdependent. For every row processed
by the inner query, the outer query is
processed as well. The inner query depends
on the outer query before it can be
processed.
SELECT p.product_name FROM
product p
WHERE p.product_id = (SELECT
o.product_id FROM order_items o
WHERE o.product_id =
p.product_id);
SELECT d.mgr AS
mgr_emp_#,d.deptno,e.sal
FROM emp d INNER JOIN emp e
ON e.empno =d.mgr
WHERE e.sal = (SELECT MAX (sal)
FROM emp e WHERE d.deptno=
e.deptno);
EXIST
Operator
Ranking