Td Advanced SQL

download Td Advanced SQL

of 36

Transcript of Td Advanced SQL

  • 8/21/2019 Td Advanced SQL

    1/88

     TERADATAAdvanced SQL

  • 8/21/2019 Td Advanced SQL

    2/88

    .SET Session Transaction ANSI

    Change mode from BTET to ANSI

  • 8/21/2019 Td Advanced SQL

    3/88

    .SET Session Transaction BTET

    Change mode from ANSI to BTET

  • 8/21/2019 Td Advanced SQL

    4/88

    Displa error if Command other than TD Standard.set session SQL!LA" ENTR#.set session SQL!LA" N$NE

  • 8/21/2019 Td Advanced SQL

    5/88

    Window Aggregate Functions

    A %indo% speci&cation is applied is called a %indo%

    aggregate f'nction. (indo% aggregate f'nctions are'sed to perform $LA)* %hich permits analsis of datain the data %areho'se or data mart.Count Window + "eneration of total co'nts and s',+co'nts.

    Sum Window + "eneration of totals and s',totals.Cumulative Sum ++ )ermits c'm'lative s'mmation ofa val'e over time or an dimension.Moving Average ++ )ermits comp'tation of a moving

    average ,ased on a speci&ed %indo%.Moving Sum ++ )ermits calc'lation of a moving s'mover time ,ased on a speci&ed %indo%.Moving Diference ++ )ermits calc'lation of a movingdi-erence over time ,ased on a speci&ed %indo%.

    Lie traditional aggregate f'nctions* %indo% aggregate f'nctionsoperate on gro'ps of ro%s and permit /'ali&cation and &ltering of thegro'p res'lt. 0nlie aggregations* $LA) f'nctions ret'rn individ'al

  • 8/21/2019 Td Advanced SQL

    6/88

    (indo% aggregate f'nctions prod'ce$LA) res'lts2

    3 S',+co'nts3 !inal co'nts3 S',+totals

    3 !inal totals3 C'm'lative S'ms3 4oving S'ms3 4oving Averages

    3 4oving Di-erencesWindow unctions may be perormed on:5 Ta,les 6 )erm* Temp* Derived 75 8ie%s5 INSERT9SELECT pop'lations

  • 8/21/2019 Td Advanced SQL

    7/88

     The C$0NT (indo% f'nction ma ,e 'sed to perform the follo%ingoperations2Co'nt the n'm,er of ro%s in a de&ned gro'p or in all gro'ps

    A similar res'lt can ,e prod'ced 'sing the (IT: and (IT:...B#e;tensions to

     Teradata SQL. The (IT:...B# f'nction is 'sed to prod'ce s',+totals6and

    s',+co'nts7 over the detail data for a gro'p* as de&ned , the B#cla'se.Similarl* the (IT: f'nction is 'sed to provide grand totals 6andgrand co'nts7over the detail data for all ro%s.

     The C$0NT (indo% f'nction is an ANSI+standard f'nction* %hereasthe(IT: and (IT:...B# f'nctions are TD standard.

     The C$0NT (indo% f'nction also prod'ces tr'e relational o'tp't6'niform col'mns and ro%s7 %hereas (IT: and (IT:...B# do not.

  • 8/21/2019 Td Advanced SQL

    8/88

  • 8/21/2019 Td Advanced SQL

    9/88

    SELECTename* sal* deptno*C$0NT6deptno7 $8ER 6 7 AS

     Total=Co'nt!R$4 samples.emp (:ERE Deptno IN6>?*@?7$RDER B# @*>

  • 8/21/2019 Td Advanced SQL

    10/88

    SELECTename* sal* deptno!R$4 samples.emp (:ERE Deptno IN

    6>?*@?7(IT: C$0NT 6Deptno7 6TITLE Total=Co'nt7$RDER B# @*>

  • 8/21/2019 Td Advanced SQL

    11/88

    SELECTename* sal* deptno*C$0NT6deptno7 $8ER 6)ARTITI$N B#

    Deptno7AS Dept=Co'nt!R$4 samples.emp (:ERE Deptno IN6>?*@?7

  • 8/21/2019 Td Advanced SQL

    12/88

    SELECTename* sal* deptno!R$4 samples.emp (:ERE Deptno IN 6>?*@?7

    (IT: C$0NT6Deptno 7 6TITLE Total=Co'nt7 , deptno

  • 8/21/2019 Td Advanced SQL

    13/88

  • 8/21/2019 Td Advanced SQL

    14/88

    SELECT empno* ename * sal*deptno* S046sal7 $8ER 6)ARTITI$N B# deptno7!R$4 samples.emp

  • 8/21/2019 Td Advanced SQL

    15/88

    SELECT empno* ename* sal* deptno!R$4 samples.emp(IT: S046sal7 B# deptno

    t t ,l l t,l

  • 8/21/2019 Td Advanced SQL

    16/88

    create ta,le salest,l6storeid int * prodid char * sales

    decimal6*77insert into salest,l val'es 6>??>*A*FGH.??7insert into salest,l val'es 6>??>*B*GF@H.??7insert into salest,l val'es 6>??>*A*F@H.??7

    insert into salest,l val'es 6>??>*C*>FGH.??7insert into salest,l val'es 6>??>*A*F???.??7insert into salest,l val'es 6>??>*B*>??.??7

    insert into salest,l val'es 6>??*A*FGH.??7

    insert into salest,l val'es 6>??*B*FGH.??7insert into salest,l val'es 6>??*A*???.??7insert into salest,l val'es 6>??*C*FGH.??7insert into salest,l val'es 6>??*C*@???.??7

    insert into salest,l val'es 6>??@*A*FGH.??7

    insert into salest,l val'es 6>??@*A*FGH.??7

  • 8/21/2019 Td Advanced SQL

    17/88

    SELECT storeid * prodid * sales* S046sales7 $8ER 6)ARTITI$N B# storeid7!R$4 samples.salest,l $RDER B# >*

  • 8/21/2019 Td Advanced SQL

    18/88

    SELECT storeid * prodid * sales!R$4 samples.salest,l(IT: S046sales7 B# storeid $RDER B#

    >*

  • 8/21/2019 Td Advanced SQL

    19/88

    SELECT storeid * prodid* sales%ith S046sales7 !R$4samples.salest,l

    $RDER B# >*

  • 8/21/2019 Td Advanced SQL

    20/88

    SELECT storeid * prodid* sales* S046sales7 $8ER 6 7

    !R$4 samples.salest,l $RDER B# >*

  • 8/21/2019 Td Advanced SQL

    21/88

    Teradata !tension

    Alternative

    An alternative Teradata shortc'tJ e;tension is the CS04

    f'nction %hich can prod'ce the same res'lts* ho%everdoes not compl %ith ANSI standards.

    CS04 6 colname* sort=item>* sort=item*

    < 7Res'lts are sorted in ascending order ,ased on thespeci&ed sort list col'mns. Descending sorts of an ofthe sort list col'mns ma ,e speci&ed , 'sing theDESC Q'ali&er.

  • 8/21/2019 Td Advanced SQL

    22/88

    insert into dail=sales val'es 6 >?*>+?+?H*>??.??7insert into dail=sales val'es 6 >?*>+?+?*???.??7

    insert into dail=sales val'es 6 ?*>+?+?H*>??.??7insert into dail=sales val'es 6 >?*>+?+?F*?.??7insert into dail=sales val'es 6 @?*>+?+?H*@??.??7

    CREATE TABLE dail=sales6itemid INTE"ER*

    salesdate DATE !$R4AT ##9449DD*sales DECI4AL6*77 )RI4AR# INDE 6 itemid 7

    Th l ti f ti t

  • 8/21/2019 Td Advanced SQL

    23/88

    The c'm'lative s'm f'nction comp'tes ar'nning or c'm'lative total of a col'mnJs val'e

    SELECT salesdate* sales*S046sales7 $8ER 6$RDER B# salesdateR$(S 0NB$0NDED )RECEDIN"7AS MCs'mM !R$4 samples.dail=sales (:ERE salesdate BET(EEN DATE >+?>+?> AND DATE >+>+@>

  • 8/21/2019 Td Advanced SQL

    24/88

    -- Query with out " ROWS UNBOUNDED PRECEDING "

    SELECT salesdate* sales* S046sales7 $8ER 6order ,

    salesdate 7AS MCs'mM !R$4 samples.dail=sales(:ERE salesdateBET(EEN DATE >+?>+?> AND DATE >+>+@>

  • 8/21/2019 Td Advanced SQL

    25/88

    SELECT salesdate* sales * ETRACT64$NT: !R$4 salesdate7 AS 4on*S046sales7 $8ER 6)ARTITI$N B# 4on $RDER B#

    salesdateR$(S 0NB$0NDED )RECEDIN"7 AS MCs'mM!R$4 samples.dail=sales (:ERE itemid >?AND ETRACT6 #EAR !R$4 salesdate7 > AND

    4on in 6>*7

  • 8/21/2019 Td Advanced SQL

    26/88

    SELECT salesdate* itemid* sales* 4S046sales* @* salesdate7 AS M4s'mM!R$4 samples.dail=sales(:ERE itemid >?AND ETRACT6#EAR !R$4 salesdate7 >AND ETRACT64$NT: !R$4 salesdate7 IN

    6>*7

  • 8/21/2019 Td Advanced SQL

    27/88

    SELECT salesdate * itemid * sales* S046sales7 $8ER 6$RDER B# salesdateR$(S )RECEDIN"7 AS M4s'mM

    !R$4 samples.dail=sales(:ERE itemid >?AND ETRACT6#EAR !R$4 salesdate7 >AND ETRACT64$NT: !R$4 salesdate7 IN6>*7

  • 8/21/2019 Td Advanced SQL

    28/88

    SELECT salesdate* itemid* sales*ETRACT64$NT: !R$4 salesdate7 as mon*4A8"6sales* * salesdate7 AS M4AvgM!R$4 samples.dail=sales (:ERE itemid >?

    AND ETRACT6#EAR !R$4 salesdate7>AND ETRACT64$NT: !R$4 salesdate7 IN6>*7

    E;ample2 )rod'ce a listing sho%ing a %eel movingaverage of sales reven'e for the &rst t%o months of>. 0se a %idth of G. 0se the Teradata 4A8" f'nction

  • 8/21/2019 Td Advanced SQL

    29/88

    SELECT salesdate* itemid* sales

    * A8"6sales7 $8ER 6$RDER B# salesdateR$(S F )RECEDIN"7 AS M4AvgM!R$4 samples.dail=sales (:ERE itemid >?AND ETRACT6#EAR !R$4 salesdate7 >AND ETRACT64$NT: !R$4 salesdate7 IN 6>*7

  • 8/21/2019 Td Advanced SQL

    30/88

    SELECT salesdate*CAST6itemid AS B#TEINT7 6!$R4AT 7 AS MitemidM*sales*CS046sales* salesdate7 AS MCS04M

    *4S046sales* @* salesdate7 AS M4S04M*4DI!!6sales* @* salesdate7 AS M4DI!!M*4A8"6sales* @* salesdate7 AS M4A8"M!R$4 samples.dail=sales (:ERE salesdate BET(EEN ?>?>AND >@>

  • 8/21/2019 Td Advanced SQL

    31/88

    $rdered Analtic

    !'nction Tpes

  • 8/21/2019 Td Advanced SQL

    32/88

    SELECT storeid* prodid* sales*S046sales7 $8ER 6$RDER B# sales

    DESC7!R$4 salest,l

    SELECT storeid* prodid* sales*

    S046sales7 $8ER 6)ARTITI$N B# prodid$RDER B# sales DESC7!R$4 salest,l

    SELECT storeid* prodid* sales*S046sales7 $8ER 6)ARTITI$N B# prodid$RDER B# sales DESC7 AS )rodS'm!R$4 salest,l Q0ALI!# )rodS'm O

    >??

  • 8/21/2019 Td Advanced SQL

    33/88

    SELECT storeid* prodid* sales*4IN6sales7$8ER 6)ARTITI$N B#storeid $RDER B# sales DESC7!R$4 salest,l

    SELECT storeid* prodid* sales*

    4A6sales7$8ER 6)ARTITI$N B#storeid$RDER B# sales DESC7!R$4 salest,l

  • 8/21/2019 Td Advanced SQL

    34/88

    anced N'meric !ormatting $pti

  • 8/21/2019 Td Advanced SQL

    35/88

  • 8/21/2019 Td Advanced SQL

    36/88

  • 8/21/2019 Td Advanced SQL

    37/88

    Radi; and "ro'p Separators The follo%ing /'er 'ses SD!6 Speci&cation for Data formating 7conventions tode&ne a format for the o'tp't. These conventions

    m'st ,e de&ned in the SD! &le 'sing the tdlocaldef'tilit.

    SELECT salar=amo'nt 6!$R4AT "+6>?7D677!R$4 emploee(:ERE emploee=n'm,er K?>

    salar=amo'nt+++++++++++++>??*???.??

    "+ Represents the "R$0) SE)ARAT$R as de&ned in the SD!. In 0.S.applications*

    this is 's'all a comma 6*7 character. It is'sed to separate digits ofthe %hole n'm,erinto gro'ps of three or less. It m'st al%as appear as the &rstcharacter in a !$R4ATstring. D+ Represents the RADI sm,ol as de&ned in the SD!. Radi;

    separates the %hole n'm,er from the fractional part. In 0.S.

    Note2SD! sm,ols ma not ,e mi;ed in the same !$R4AT string %ith

    e;plicit !$R4ATdesignations. !or e;ample* o' cannot have D and an e;plicit . in

  • 8/21/2019 Td Advanced SQL

    38/88

    Integers* !ractions and Pero+s'ppression The same o'tp't ma ,e achieved 'sing thefollo%ing formatting e;ample2SELECT salar=amo'nt 6!$R4AT "+P6I7D6!77!R$4 emploee(:ERE emploee=n'm,er K?>salar=amo'nt+++++++++++++>??*???.??!+ Represents the n'm,er ofcharacters

    needed to displa the fraction portion of n'meric data. In the case of a DEC6>?*7 datatpe* 6!7 is e/'ivalent to 67.I + Represents the n'm,er of charactersneeded to displa the INTE"ER portion of 

    n'meric data. In the case of a DEC6>?*7 datatpe* I is e/'ivalent to 6K7.P+ Represents ero+s'ppressed decimal digit.P6I7 represents a ero+s'ppressedinteger. !loating ero+s'ppression ma also

    ,e speci&ed 'sing m'ltiple Ps 6PPPPPP7.

  • 8/21/2019 Td Advanced SQL

    39/88

    !i;ed C'rrenc $ptions The follo%ing e;amplesdemonstrate the a,ilit to

    c'stomie formats to accomdate a variet ofinternational conventions for representing c'rrencamo'nts. !i;ed C'rrencS"CT salary #F$%MAT &'"(#)*D(#F*&*F%$M retail+employee

    W,% p-one./(0123(4345+++++++++++++++++++++??*>??*???.??

    L+ Represents the C0RRENC# S#4B$L as de&nedin the SD!. In 0.S. applications* this is 's'all

    the dollar 67 sm,ol. A single L indicates a&;ed 6i.e. non+oating7c'rrenc sm,ol.S"CT salary #F$%MAT &'6#)*D(#F*"&*

    F%$M retail+employeeW,% p-one./(0123(4345

  • 8/21/2019 Td Advanced SQL

    40/88

  • 8/21/2019 Td Advanced SQL

    41/88

  • 8/21/2019 Td Advanced SQL

    42/88

  • 8/21/2019 Td Advanced SQL

    43/88

  • 8/21/2019 Td Advanced SQL

    44/88

  • 8/21/2019 Td Advanced SQL

    45/88

  • 8/21/2019 Td Advanced SQL

    46/88

  • 8/21/2019 Td Advanced SQL

    47/88

  • 8/21/2019 Td Advanced SQL

    48/88

  • 8/21/2019 Td Advanced SQL

    49/88

  • 8/21/2019 Td Advanced SQL

    50/88

  • 8/21/2019 Td Advanced SQL

    51/88

  • 8/21/2019 Td Advanced SQL

    52/88

  • 8/21/2019 Td Advanced SQL

    53/88

    Timestamp

  • 8/21/2019 Td Advanced SQL

    54/88

  • 8/21/2019 Td Advanced SQL

    55/88

  • 8/21/2019 Td Advanced SQL

    56/88

  • 8/21/2019 Td Advanced SQL

    57/88

  • 8/21/2019 Td Advanced SQL

    58/88

  • 8/21/2019 Td Advanced SQL

    59/88

  • 8/21/2019 Td Advanced SQL

    60/88

  • 8/21/2019 Td Advanced SQL

    61/88

  • 8/21/2019 Td Advanced SQL

    62/88

  • 8/21/2019 Td Advanced SQL

    63/88

  • 8/21/2019 Td Advanced SQL

    64/88

  • 8/21/2019 Td Advanced SQL

    65/88

    S', Q'eries

    7sually a sub9uery s-ould return only

  • 8/21/2019 Td Advanced SQL

    66/88

     7sually8 a sub9uery s-ould return onlyone record8 but sometimes it can alsoreturn multiple records w-en used wit-

    operators lie );8 ;$T ); in t-e w-ereclause+S"CT mpno8 enameF%$M mp W,% deptno );#10840*5

    S"CT mpno8 enameF%$M mp W,%

  • 8/21/2019 Td Advanced SQL

    67/88

    Correlated Sub9uery

  • 8/21/2019 Td Advanced SQL

    68/88

    Correlated Sub9ueryThe inner /'er and the o'ter /'er are

    interdependent. !or ever ro% processed, the inner /'er* the o'ter /'er isprocessed as %ell. The inner /'er dependson the o'ter /'er ,efore it can ,eprocessed.

    S"CT p+product=name F%$Mproduct p

    W,% p+product=id . #S"CTo+product=id F%$M order=items oW,% o+product=id .

    p+product id*5

  • 8/21/2019 Td Advanced SQL

    69/88

    S"CT ename8deptno 8salF%$M emp

    W,% sal . #S"CT MA> #sal*F%$M emp e W,% e+deptno .e+deptno*5

  • 8/21/2019 Td Advanced SQL

    70/88

    S"CT ename 8sal F%$M empeW,% sal ? #S"CT A@' #sal*

    F%$M emp e W,% e+deptno.e+deptno*5

  • 8/21/2019 Td Advanced SQL

    71/88

    S"CT d+mgr ASmgr=emp=8d+deptno8e+salF%$M emp d );;% B$); emp e

    $; e+empno .d+mgrW,% e+sal . #S"CT MA> #sal*F%$M emp e W,% d+deptno.e+deptno*5

  • 8/21/2019 Td Advanced SQL

    72/88

    EIST$perator

  • 8/21/2019 Td Advanced SQL

    73/88

    S"CT &T-ere are employees&AS Answer W,% not >)STS6S"CT F%$M emp W,%deptno . 0*5

    S"CT &T-ere are employees&AS Answer W,% >)STS

    6S"CT F%$M emp W,%deptno . 0*5

  • 8/21/2019 Td Advanced SQL

    74/88

  • 8/21/2019 Td Advanced SQL

    75/88

  • 8/21/2019 Td Advanced SQL

    76/88

  • 8/21/2019 Td Advanced SQL

    77/88

  • 8/21/2019 Td Advanced SQL

    78/88

  • 8/21/2019 Td Advanced SQL

    79/88

  • 8/21/2019 Td Advanced SQL

    80/88

  • 8/21/2019 Td Advanced SQL

    81/88

  • 8/21/2019 Td Advanced SQL

    82/88

  • 8/21/2019 Td Advanced SQL

    83/88

    Raning

  • 8/21/2019 Td Advanced SQL

    84/88

  • 8/21/2019 Td Advanced SQL

    85/88

  • 8/21/2019 Td Advanced SQL

    86/88

  • 8/21/2019 Td Advanced SQL

    87/88

  • 8/21/2019 Td Advanced SQL

    88/88