14 Sql4 Select Null Je Case

download 14 Sql4 Select Null Je Case

of 16

Transcript of 14 Sql4 Select Null Je Case

  • 8/19/2019 14 Sql4 Select Null Je Case

    1/42

    SQL (4)Predicate & NULL, joncţiuni externe,

    structuri CASEMarinFotace

    Universitatea Al.I. Cuza Iași

    Facultatea de Economie și Administrarea Afacerilor

    Departamentul de Contabilitate, Informatică economică șiStatistică

  • 8/19/2019 14 Sql4 Select Null Je Case

    2/42

    Linii!e ta"e!ei CL#EN$#

    %a!ori NULL a!e

    atri"utu!ui e!e'on

  • 8/19/2019 14 Sql4 Select Null Je Case

    3/42

    NULL o ri*+ ro"!e*+

    SELECT * FROM clientiW HERE Telefon IN ('0232212121', NULL

  • 8/19/2019 14 Sql4 Select Null Je Case

    4/42

    NULL a doua ro"!e*+Care dintre clienţi au adresa specifcată /

    cunoscută ?SELECT * FRO M clienti

    W HERE !"#e$% NO T IN (NULL

  • 8/19/2019 14 Sql4 Select Null Je Case

    5/42

    Extra-erea .a!ori!or NULL

    Pentru care dintre clienţi nu se cunoaşteadresa ?

    SELECT * FRO M clienti

    W HERE !"#e$% IS NULL

  • 8/19/2019 14 Sql4 Select Null Je Case

    6/42

    #S NULL corect  / NULL incorect 000

    SELECT *FROM CLIENTI

    W HERE !"#e$% & NULL

  • 8/19/2019 14 Sql4 Select Null Je Case

    7/42

    1rdon+ri 2i NULLit+ţi

    Să se ordoneze clienţii după numerele deteleon, valorile NULL find plasate la nceput 

    SELECT * FRO M clienti

    ORER ) Telefon NULLS FIRST

  • 8/19/2019 14 Sql4 Select Null Je Case

    8/42

    3ou+ ta"e!e noi PE5S1NAL6

  • 8/19/2019 14 Sql4 Select Null Je Case

    9/42

    62i SP15U5#

  • 8/19/2019 14 Sql4 Select Null Je Case

    10/42

    Crearea ce!or dou+ ta"e!e

    C5EAE A7LE ersona! (Marca NUME5#C(8) N1 NULL C1NS5A#N 9:ersona!; P5#MA5< =EA5(4?) N1 NULL,

    3ataNast 3AE,

    Co*art %A5C>A5(;?),

    MarcaSe' NUME5#C(8) C1NS5A#N '9:ersona!; 5EFE5ENCES ersona!

    (*arca),Sa!ari'ar NUME5#C(@;,;)

    )

    C5EAE A7LE soruri (

    An NUME5#C(4) N1 NULL,

    Luna NUME5#C(;) N1 NULL,Marca NUME5#C(8) N1 NULL

    C1NS5A#N '9:soruri:ersona! 5EFE5ENCES ersona! (*arca),

    Sor%eci*e NUME5#C(@;,;),

    SorNoate NUME5#C(@;,;),

    SorC3 NUME5#C(@;,;),

    A!teSor NUME5#C(@;,;),C1NS5A#N 9:soruri P5#MA5< =E< (an,!una,*arca) )

  • 8/19/2019 14 Sql4 Select Null Je Case

    11/42

    Pou!area ce!or dou+ ta"e!e (@)ISE!" I"# personal $A%UES &', (A)A*A" '(, DA"E('+-/0/'(,

    (DI!EC"IUE(, U%%, '//1 2ISE!" I"# personal $A%UES &-, (A)A*A" -(, DA"E('+00'/''(, (FIACIA!(, ',

    '34/1 2

    ISE!" I"# personal $A%UES &5, (A)A*A" 5(, DA"E('+-/6/-(, (7A!8E"I)(,', '34/1 2

    ISE!" I"# personal $A%UES &3, (A)A*A" 3(, U%%, (FIACIA!(, -, '56/1 2

    ISE!" I"# personal $A%UES &4, (A)A*A" 4(, DA"E('+4/35/(, (FIACIA!(, -,'3-/1 2

    ISE!" I"# personal $A%UES &, (A)A*A" (, DA"E('+4''/+(, (FIACIA!(, 4,'54/1 2

    ISE!" I"# personal $A%UES &0, (A)A*A" 0(, U%%, (FIACIA!(, 4, '-6/1 2

    ISE!" I"# personal $A%UES &6, (A)A*A" 6(, DA"E('+/'-5'(, (7A!8E"I)(,5, '-+/1 2

    ISE!" I"# personal $A%UES &+, (A)A*A" +(, DA"E('+0/--6(, (7A!8E"I)(,5, '3'/1 2

    ISE!" I"# personal $A%UES &'/, (A)A*A" '/(, DA"E('+0-/'-+(,

    (!ESU!SE U7AE(, ', '50/1 2

  • 8/19/2019 14 Sql4 Select Null Je Case

    12/42

    ISE!" I"# sporuri $A%UES &-/'', 4, -, 6/, 34, /, 0/1 2

    ISE!" I"# sporuri $A%UES &-/'', 4, 5, '34, /, /, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 4, '/, '50, /, /, 35/1 2

    ISE!" I"# sporuri $A%UES &-/'', , ', '/, /, /, /1 2

    ISE!" I"# sporuri $A%UES &-/'', , -, 6/, /, /, '4/1 2

    ISE!" I"# sporuri $A%UES &-/'', , 3, 4/, '4, 66, '-/1 2

    ISE!" I"# sporuri $A%UES &-/'', , 4, '5/, '4, /, -/1 2ISE!" I"# sporuri $A%UES &-/'', , '/, -//, '-, /, 1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, ', '/, /, U%%, U%%1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, -, 6/, /, /, '461 2

    ISE!" I"# sporuri $A%UES &-/'', 0, 5, '34, /, /, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, 3, 4/, '4, U%%, '41 2

    ISE!" I"# sporuri $A%UES &-/'', 0, 4, '5/, /, /, '-/1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, , ''/, '30, /, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, 0, /, -'/, /, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, 6, '5/, /, '4, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, +, '3/, '//, 00, /1 2

    ISE!" I"# sporuri $A%UES &-/'', 0, '/, -//, /, /, '-/1 2

    Pou!area ce!or dou+ ta"e!e (;)

  • 8/19/2019 14 Sql4 Select Null Je Case

    13/42

    Care sunt ersoane!e 2i !uni!e entrucare nu sa ca!cu!at (nu se cunoa2te)

    soru! entru condiţii deose"ite B

    SELECT SM %#c%, N+ e-#en,

    Co .%#t, !n, L+n%

    FRO M .e#$on%l . INNER /O IN  $.o#+#i $ O N .M %#c%& $M %#c%

    W HERE S.o#C IS NULL

  • 8/19/2019 14 Sql4 Select Null Je Case

    14/42

    Care sunt ersoane!e 2i !uni!e entrucare soru! entru condiţii deose"ite a

    'ost ero B

    SELECT SM %#c%, N+ e-#en, Co .%#t, !n, L+n%

    FRO M .e#$on%l . INNER /OIN $.o#+#i $ ON

    .M %#c%& $M %#c%W HERE S.o#C & 0

    OR ER ) N+ e-#en,

    !n, L+n%

  • 8/19/2019 14 Sql4 Select Null Je Case

    15/42

    Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (@)

    SELECT $M %#c%, N+ e-#en, Co .%#t,

    S.o#eci e, S.o#No%.te, S.o#C,

    !lteS.o#, S.o#eci e S.o#No%.te S.o#C !lteS.o# !S Tot%lS.o#+#i

    FRO M .e#$on%l . INNER /OIN $.o#+#i $

    O N .M %#c%& $M %#c%

    W HERE !n & 2011 !N L+n%&

  • 8/19/2019 14 Sql4 Select Null Je Case

    16/42

    Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (;)

  • 8/19/2019 14 Sql4 Select Null Je Case

    17/42

    Con.ertirea NULLit+Gi!or

    #rice valoare U%% poate 9 :nlocuită cu oaltă valoare, numerică, șir, dată ...

    Func;ii< C#A%ESCE, $A%UE, $%

    E=< C1ALESCE (SorC3, ?)◦ Dacă valoarea lui SporCD nu este NULL, func iaț

    COALESCE o returnează ca atare

    ◦ Dacă valoarea lui SporCD este NULL, func iaț

    COALESCE returnează valoarea 0 Alte e=< C1ALESCE (Loca!itate, H#asiI),

    C1ALESCE (3ataFact, CU55EN:3AE)

  • 8/19/2019 14 Sql4 Select Null Je Case

    18/42

    Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (J)

    SELECT $M %#c%, N+ e-#en, Co .%#t,S.o#eci e, S.o#No%.te, S.o#C, !lteS.o#,

    CO!LESCE(S.o#eci e,0

    CO!LESCE(S.o#No%.te,0 CO!LESCE(S.o#C,0

    CO!LESCE(!lteS.o#,0 !S Tot%lS.o#+#i

    FRO M .e#$on%l . INNER /OIN $.o#+#i $ON .M %#c%& $M %#c%

    W HERE !n & 2011 !N L+n%&

  • 8/19/2019 14 Sql4 Select Null Je Case

    19/42

    Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (4)

  • 8/19/2019 14 Sql4 Select Null Je Case

    20/42

    Kru+ri 2i NULLit+ţi

    Să se determine, n ta!el "#C$U%&, dec'te ori apare fecare valoarea distinctăa atri!utului (!s

    SE%EC" C#A%ESCEbs,(> fara observatii

    >(1, C#U"&>1 F!#7 facturi

    )!#U? @ #bs

    #!DE! @ #bs U%%S %AS"

  • 8/19/2019 14 Sql4 Select Null Je Case

    21/42

     oncţiunea extern+

  • 8/19/2019 14 Sql4 Select Null Je Case

    22/42

     oncţiunea extern+ n SQL;

    La stângaSELECT *

    FO! r" LEFT OUTER JOIN r# ON r"$C%r#$C

    La dreapta

    SELECT *

    FO! r" RIGHT OUTER &O'N r# ON r"$C%r#$C

    Totală

    SELECT *

    FO! r" FULL OUTER JOIN r# ON r"$C%r#$C

  • 8/19/2019 14 Sql4 Select Null Je Case

    23/42

    Ex!icatii deta!iate desre jonctiunea externa

    http://stackoer!lo"#co$/%&est'ons/()*+,/d'!!er ence-.et"een-'nner-and-o&ter-o'ns

  • 8/19/2019 14 Sql4 Select Null Je Case

    24/42

    SELECT *

    FRO M co"+#i4.o$t%le C- LEFT O UTER /O IN

    clienti C ON C-Co"-o$t & CCo"-o$tW HERE CCo"-o$t IS NULL

    Care sunt coduri!e o2ta!e !acare nu se aO+ niciun c!ient B

  • 8/19/2019 14 Sql4 Select Null Je Case

    25/42

    SELECT !n, L+n%, .M %#c%, N+ e-#en, S.o#No%.teFRO M .e#$on%l . INNER /O IN $.o#+#i $

    O N .M %#c%& $M %#c% !N !n& 2011 !NL+n%& 5

    ORER ) N+ e-#en, !n, L+n%

    Soruri de noate e !una *ai;?@@ (@)

  • 8/19/2019 14 Sql4 Select Null Je Case

    26/42

    Soruri de noate e !una *ai ;?@@(;)

    SELECT !n, L+n%, .M %#c%, N+ e-#en, S.o#No%.te

    FROM .e#$on%l . LEFT OUTER /OIN $.o#+#i $

    O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5

    O RER ) N+ e-#en, !n, L+n%

    S i d t ! i ;?@@

  • 8/19/2019 14 Sql4 Select Null Je Case

    27/42

    Soruri de noate e !una *ai ;?@@(J)

    SELECT CO!LESCE(!n,2011 !S !n, CO!LESCE(L+n%,5 !S

    L+n%, .M %#c%, N+ e-#en,CO!LESCE (S.o#No%.te,0 !S S.o#No%.te

    FRO M .e#$on%l . LEFT O UTER /O IN $.o#+#i $

    O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5

    O RER ) N+ e-#en, !n, L+n%

  • 8/19/2019 14 Sql4 Select Null Je Case

    28/42

    SELECT .M %#c%, N+ e-#en,

    CO!LESCE ($5S.o#No%.te,0 !S 6S.No%.teM !I6,

    CO!LESCE ($7S.o#No%.te,0 !S6S.No%.teIUNIE6

    FRO M .e#$on%l .

    LEFT O UTER /O IN $.o#+#i $5 ON

    .M %#c%& $5M %#c%!N $5!n& 2011 !N $5L+n%& 5

    LEFT O UTER /O IN $.o#+#i $7 ON.M %#c%& $7M %#c%

    !N $7!n& 2011 !N $7L+n%& 7

    Soruri de noate e !uni!e MA#i #UN#E ;?@@ (@)

    S i d ! i! MA#

  • 8/19/2019 14 Sql4 Select Null Je Case

    29/42

    Soruri de noate e !uni!e MA#2i #UN#E ;?@@ (;)

  • 8/19/2019 14 Sql4 Select Null Je Case

    30/42

    Soruri de noate e tri*estru!; ;?@@, !unar i cu*u!at (@)

    SELECT .M %#c%, N+ e-#en,CO!LESCE ($8S.o#No%.te,0 !S 6S.No%.te !-RILIE6,

    CO!LESCE ($5S.o#No%.te,0 !S 6S.No%.te M !I6,

    CO!LESCE ($7S.o#No%.te,0 !S 6S.No%.te IUNIE6,

    CO!LESCE ($8S.o#No%.te,0 CO!LESCE ($5S.o#No%.te,0  CO!LESCE ($7S.o#No%.te,0 !S 6S.No%.te TRIM 26

    FRO M .e#$on%l .

    LEFT OUTER /O IN $.o#+#i $8 O N .M %#c%& $8M %#c%

    !N $8!n& 2011 !N $8L+n%& 8

    LEFT OUTER /O IN $.o#+#i $5 O N .M %#c%& $5M %#c%

    !N $5!n& 2011 !N $5L+n%& 5

    LEFT OUTER /O IN $.o#+#i $7 O N .M %#c%& $7M %#c%

    !N $7!n& 2011 !N $7L+n%& 7

    O R ER ) N+ e-#en

    S i d t t i t !

  • 8/19/2019 14 Sql4 Select Null Je Case

    31/42

    Soruri de noate e tri*estru!; ;?@@, !unar i cu*u!at (;)

  • 8/19/2019 14 Sql4 Select Null Je Case

    32/42

    7!ocuri deciiona!e (teste)*u!ti!e

    $estea proastă< :n SB% nu e=istă #F $estea bună< e=istă CASE care oacă pe post de

    IF multiplu<

    ◦ IF con(i ieț THEN )loclansatc+n(con(i iaesten(eplinităț

    EL0E )loclansatc+n(con(i iaNUesten(eplinităț EN1 IF

    ◦ 230E 

    >EN condi;ie' >EN bloclansatcndcondi;ia'este

     :ndeplinită

    >EN condi;ie- >EN bloclansatcndcondi;ia-este :ndeplinită

    ...

    ELSE bloclansatcndniciunadintrecondi;iiledemaisus

    Ueste:ndeplinită

    ◦ EN1

    CRţi dintre c!ienţi sunt din

  • 8/19/2019 14 Sql4 Select Null Je Case

    33/42

    CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara

    #a2u!ui B (@)SELECT C!SE Loc

    W HEN 'I%$i' THEN 'in I%$i'

    ELSE 'in %f%#% I%$+l+i'

    EN !S -o9ition%#e,

    CO UNT(* !S N#Clienti

    FRO M clienti c INNER /O IN co"+#i4.o$t%le c.

    O N cCo"-o$t & c.Co"-o$t:RO U- ) C!SE Loc

    W HEN 'I%$i' THEN 'in I%$i' ELSE 'in %f%#%

    I%$+l+i'

    EN

    CRţi dintre c!ienţi s nt din

  • 8/19/2019 14 Sql4 Select Null Je Case

    34/42

    CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara

    #a2u!ui B (;)

    CRţi dintre c!ienţi sunt din

  • 8/19/2019 14 Sql4 Select Null Je Case

    35/42

    CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara

    #a2u!ui B (J)SE%EC"

    CASE

    E %oc G (Iasi( "E (Din Iasi(

    E%SE (Din afara Iasului(ED AS ?ozitionare,

    C#U"&>1 AS rClienti

    F!#7 clienti c IE! *#I coduriHpostale cp# c.Cod?ost G cp.Cod?ost

    )!#U? @ CASE E %oc G (Iasi( "E (Din Iasi(

    E%SE (Din afara Iasului( ED

  • 8/19/2019 14 Sql4 Select Null Je Case

    36/42

    Kru+ri, NULL 2i CASESă se afşeze c'te acturi au o!servaţii )adică

    valoarea atri!utului (!s este nenulă* şi c'tenu au

    SELECT C!SE W HEN CO!LESCE(O;$,' ' & ' '

    THEN '* f%#% o;$e#

  • 8/19/2019 14 Sql4 Select Null Je Case

    37/42

    SELECT C!SE W HEN $!n IS NULL THEN 2011 ELSE $!n

    EN !S !n,

    C!SE W HEN $L+n% IS NULL THEN 5 ELSE $L+n%

    EN !S L+n%,

    .M %#c%, N+ e-#en,

    C!SE W HEN S.o#No%.te IS NULL THEN 0 ELSE

    $S.o#No%.te EN !S S.o#No%.te

    FRO M .e#$on%l . LEFT OUTER /O IN $.o#+#i $

    O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5

    O RER ) N+ e-#en, !n, L+n%

    Soruri de noate e !una *ai;?@@ (4)

    ('+r+ C1ALESCE)

    an-a a au r * n u e

  • 8/19/2019 14 Sql4 Select Null Je Case

    38/42

     an-a a au r * , n u e;?@@, sor entru condiţii

    deose"ite 2i cRţi nu BSELECT C!SE W HEN S.o#C = 0 THEN

    '!+ $.o# C' ELSE 'N+ %+ $.o# C' EN !S

    6Sit+%tie6, CO UNT(* !S N#

    FRO M $.o#+#iW HERE !n& 2011 !N L+n%&

    :RO U- ) C!SE W HEN S.o#C = 0 THEN

    '!+ $.o# C' ELSE 'N+ %+ $.o# C' EN

    C ! R + i! di

  • 8/19/2019 14 Sql4 Select Null Je Case

    39/42

    Care este .a!oarea .Rn+ri!or dinDecare i a s+t+*Rnii (#) B

    SELECT TO 4CH!R(%t%F%ct, '"%>' !S ?i4S%.t% in%,

    SUM (C%ntit%te * -#etUnit * (1 -#ocT! !S in9%#i4?i4S%.t

    FRO M f%ct+#i f INNER /O IN liniif%ct lf O N fN#f%ct& lfN#F%ct

    INNER /O IN .#o"+$e . O N lfCo"-#& .Co"-#

    :RO U- ) TO 4CH!R(%t%F%ct, '"%>'

    O R ER ) C!SE

    W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('l+ni', ' on"%>' THEN 1

    W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN (' %#@i', 't+e$"%>' THEN 2

    W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN (' ie#c+#i', 'A e"ne$"%>' THEN 3W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('Boi', 't+#$"%>' THEN 8

    W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('' IN ('$ ;DtD', '$%t+#"%>' THEN 7

    W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('"+ inicD', '$+n"%>' TH EN EN

    Care este a!oarea Rn +ri!or din

  • 8/19/2019 14 Sql4 Select Null Je Case

    40/42

    Care este .a!oarea .Rn+ri!or dinDecare i a s+t+*Rnii (##) B

    Scadenţa 'acturi!or n set ;?@@ este de @

  • 8/19/2019 14 Sql4 Select Null Je Case

    41/42

    Scadenţa 'acturi!or n set ;?@@ este de @i!eT 3ac+ ns+ cade ntro sR*"+t+ sau

    du*inic+, atunci scadenţa se *ut+ n !uneai*ediat ur*+toare

    SE%EC" rFact, DataFact AS Data Emiterii, DataFact J I"E!$A% ('( DA AS Data Scadenta,

    EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 AS Li &nr1 sapt scad.,

     "#HCA!&DataFact J I"E!$A% ('( DA, (DA(1 AS Li sapt.scad.,

    CASE E EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 G

     "E DataFact J I"E!$A% ('6( DA E%SE

    CASE E EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 G /

     "E DataFact J I"E!$A% ('0( DA

    E%SE DataFact J I"E!$A% ('( DA

    ED

      ED AS Data scad.corectata

    F!#7 facturi

    E!E "#HCA!&datafact, (77(1 G (/+-/''(

    Scadenţa de @ i!e dac+ ns+ cade

  • 8/19/2019 14 Sql4 Select Null Je Case

    42/42

    Scadenţa de @ i!e dac+ ns+ cadesR*"+ta sau du*inica, atunci se *ut+ n

    !unea ur*+toare (;)