Oracle SQL рдХреА рдмреЛрд▓реА: рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореЙрдбрд▓ред рднрд╛рдЧ 1

рдЫрд╡рд┐ рдХреЛрдИ рднреА рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреА рдкреАрдврд╝реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рднрд╛рд░реА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рд░, рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рднреАред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЙрдкрд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдк-рдпреЛрдЧреЛрдВ рдХреА рдЧрдгрдирд╛, рдЧрдгрдирд╛рдПрдВ рдЬреЛ рдЖрд╕рдиреНрди рдирдореВрдирд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рддрд╛рд░ рдХреЗ рдЬрдЯрд┐рд▓ рд╕реНрд╡рд░реВрдкрдг рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрддрд░ рддрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╕рд╛рдиреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрди SQL рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Oracle DBMS рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдХрд╛рд░реНрдп рдФрд░ MODEL рдСрдкрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред



SELECT рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ DBMS рд╕рдВрд╕реНрдХрд░рдг 10g рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореЙрдбрд▓ рдЖрдкрдХреЛ рдирдореВрдирд╛ рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рдЬрдЯрд┐рд▓ рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕реА рд╕рдордп, рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг рдкрдардиреАрдп рдФрд░ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдмрдиреЗ рд╣реБрдП рд╣реИрдВред рдПрдХ рд╢рдмреНрдж рдореЗрдВ - рдПрдХреНрд╕реЗрд▓ рдЬреИрд╕рд╛, рдкреНрд▓рд╕ рдкреВрд░рд╛ рд▓реЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред



рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕



MODEL [ IGNORE NAV ] [ RETURN UPDATED ROWS ]

[ PARTITION BY (partition_column_1, ...)]

DIMENSION BY (dimension_column_1, ...)

MEASURES (measured_column_1, ...)

RULES [ AUTOMATIC ORDER | ITERATE (value) [ UNTIL (expression)]] (

rule_1, ...

);






MODEL рдХрдерди рдХреЛ рдмрд╛рдж рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ DISTINCT рдФрд░ ORDER BY рджреНрд╡рд╛рд░рд╛ред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирдореВрдирд╛ рд╕реНрддрдВрднреЛрдВ рдХреЛ__рдкреБрд╖реНрдХрд░_ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдпрд╛рдо_рдХреЛрд▓рд┐__ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпрд╛рдБ рджреЗрддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рднрд╛рдЬрди рдмрд╛рдп рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рди рд╡рд┐рднрд╛рдЬрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдирд┐рдпрдо_ * рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдирд┐рдпрдореЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред



рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрдЦреНрдпрд╛ 1, 2 рдФрд░ 3 рдХреЗ рдирдореВрдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВрдЧреЗ:



SELECT *

FROM dual

MODEL DIMENSION BY (0 dimension)

MEASURES (dummy)

RULES (

dummy[5] = 1,

dummy[6] = 2,

dummy[7] = 3

);



DIMENSION R

---------- -

0 X

7 3

6 2

5 1






рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреАрди рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдпрд╛рдо рдЖрдпрд╛рдо рдХреЗ рд╕рд╛рде рдбрдореА рд╕рд░рдгреА рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдПрдХ рдирдпрд╛ рд╕реНрддрдВрдн рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо 0 рдЖрдпрд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдкрд╣рд▓рд╛ рдЪрд░рдг рдЪрдпрди рд╕реНрддрдВрднреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ ( рдЖрдпрд╛рдо рдореЗрдВ 0 рдЖрдпрд╛рдо , MEASURES рдореЗрдВ рдбрдореА ), рдлрд┐рд░ рдХреЙрд▓рдо рдЪреБрдиреЗрдВ (рд╡рд╛рдкрд╕реА рдбрдореА = рдПрдХреНрд╕, рдЖрдпрд╛рдо = 0 ) рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдпрд╛рдо = 5 рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбрдореА = 1 рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕реА рддрд░рд╣ рд╢реЗрд╖ рджреЛ рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, RETURN UPDATED ROWS рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



SELECT result, dummy

FROM dual

MODEL RETURN UPDATED ROWS

DIMENSION BY (dummy)

MEASURES (0 result)

RULES (

result[5] = 1,

result[6] = 2,

result[7] = 3

);



RESULT DUMMY

---------- ------

3 7

2 6

1 5






рдЖрдк рд▓реВрдк рдореЗрдВ рдирд┐рдпрдо рд╕реЗрдЯ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдПрдХ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдХрдИ рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ:



SELECT sequence

FROM dual

MODEL DIMENSION BY (0 dimension)

MEASURES (0 sequence)

RULES ITERATE (100500) UNTIL (sequence[iteration_number] > 10) (

sequence[iteration_number] =

CASE iteration_number

WHEN 0 THEN 0

WHEN 1 THEN 1

ELSE sequence[iteration_number - 2] + sequence[iteration_number - 1]

END

);



SEQUENCE

----------

0

1

1

2

3

5

8

13






ITERATE рд▓реВрдк рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (0 рд╕реЗ рд╢реБрд░реВ), рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ UNTIL рдирд┐рд░реНрджреЗрд╢ рдЗрд╕реЗ (рдЬреЛ рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ Ctrl + End рдХреЛ рджрдмрд╛рдпрд╛ рдирд╣реАрдВ рд╣реИ) рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдХрд╛рдЙрдВрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪ iteration_number рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред



рд░рдВрдЧ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг



рдЫрд╡рд┐ рдКрдкрд░, рд╣рдордиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдореЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рд░реНрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рддреАрдХрд╛рддреНрдордХ (рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рддреАрдп рдереЗ)ред рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рд╕реНрдерд┐рддреАрдп рд▓рд┐рдВрдХ рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдирдП рддрддреНрд╡ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдпрд╣ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдордЧреНрд░ рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдХрд╛рд░реНрдп рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВред



рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди рдХреЙрдлреА рдХреЗ рдирд╢реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



SELECT * FROM coffee;



TYPE CNT DAY

-------------------- ---------- ----------

turkish 1 1

espresso 1 1

turkish 2 2

black 1 2

espresso 1 2

latte 3 3

black 2 4

ice 1 4






рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рдХрд┐рддрдиреЗ рдХрдк рдХреЙрдлреА рдкрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ рдХрд┐ рдЧреБрд░реБрд╡рд╛рд░ рдХреЛ рдмреНрд▓реИрдХ рдХреЙрдлрд╝реА рдХреА рдорд╛рддреНрд░рд╛ рджреЛрдЧреБрдиреА рдереАред рддреЛ рдЕрдиреБрд░реЛрдз рд╣реИ:



SELECT *

FROM coffee

MODEL DIMENSION BY (day, type)

MEASURES (cnt)

RULES (

cnt[4, 'black' ] = cnt[cv(day), 'black' ] * 2,

cnt[ FOR day FROM 1 TO 4 INCREMENT 1, ' total for day' ] = sum<(cnt)[cv(day), ANY ],

cnt[ NULL , 'GRAND TOTAL' ] = sum(cnt)[ ANY , ' total for day' ]

)

ORDER BY day, type DESC ;



DAY TYPE CNT

--------- -------------------- ---------

1 turkish 1

1 espresso 1

1 total for day 2

2 turkish 2

2 espresso 1

2 black 1

2 total for day 4

3 latte 3

3 total for day 3

4 ice 1

4 black 4

4 total for day 5

GRAND TOTAL 14






рд╣рдо рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓рд╛ рдЧреБрд░реБрд╡рд╛рд░ рдХреЛ рдХреЙрдлреА рдХреЗ рдирд╢реЗ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред Cv (ampl_name) рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП ampl_name рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХрд╛рдВрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, cv (рджрд┐рди) рдХреЗ рдмрдЬрд╛рдп , рдЖрдк рджрд┐рди = 4 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛ, рддреЛ рдкрд┐рдЫрд▓реЗ рджрд┐рди рдХреЛ рджрд┐рди рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ = cv () рджрд┐рди) - 1) ред рджреВрд╕рд░рд╛ рдирд┐рдпрдо рд╕реЛрдорд╡рд╛рд░ рд╕реЗ рдЧреБрд░реБрд╡рд╛рд░ рддрдХ рдЙрдк-рдпреЛрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд▓реВрдк рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд┐рддреНрд░рдг рд╣реИ), рдпрд╣рд╛рдВ рд╕рдорд╛рдирддрд╛ рдХреЗ рджрд╛рдПрдВ-рдмрд╛рдПрдВ рдкрдХреНрд╖реЛрдВ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рдВрдЧ рдЙрд╕реА рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ WHERE рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЪреЗрдХ, рдХрд┐рд╕реА рднреА рдЗрдВрдбреЗрдХреНрд╕ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдореАрдХрд░рдг рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░рд╛ рдирд┐рдпрдо рдЙрдк рдпреЛрдЧ рдХрд╛ рдпреЛрдЧ рдорд╛рдирддрд╛ рд╣реИред



рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдПрдХ рдХреНрд╡реЗрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдХреЙрдлреА рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХ рдкреЗрдп рдХреЗ рдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдордВрдЧрд▓рд╡рд╛рд░ рдХреЛ рд▓рдЯреНрдЯреЗ рдХреА рдорд╛рддреНрд░рд╛, рд╕рд╛рде рд╣реА рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд▓рдХреНрд╖реНрдп рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдмреБрдзрд╡рд╛рд░ рдХреЛ рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдкреАрдиреЗ рдХреЗ рд▓рд┐рдП:



SELECT *

FROM coffee

MODEL DIMENSION BY (day, type)

MEASURES (cnt)

RULES (

cnt[ NULL , FOR type IN ( SELECT DISTINCT type FROM coffee)] = sum(cnt)[ ANY , cv(type)],

cnt[ NULL , 'GRAND TOTAL' ] = sum(cnt)[ NULL , ANY ],

cnt[ NULL , ' drank ' || cnt[2, 'latte' ] || ' cups of latte on 2 day' ] = NULL ,

cnt[ NULL , CASE

WHEN cnt[3, 'espresso' ] IS PRESENT THEN ' ACHIEVED'

ELSE ' FAILED'

END || ': drank espresso on 3 day' ] = NULL

)

ORDER BY day, type DESC ;



DAY TYPE CNT

---------- ---------------------------------------- ----------

1 turkish 1

1 espresso 1

2 turkish 2

2 espresso 1

2 black 1

3 latte 3

4 ice 1

4 black 2

turkish 3

latte 3

ice 1

espresso 2

black 3

GRAND TOTAL 12

drank cups of latte on 2 day

FAILED: drank espresso on 3 day






рдкрд╣рд▓рд╛ рдирд┐рдпрдо рдирдореВрдирд╛ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред MODEL рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╡реЗрд░реАрдЬрд╝ рдЕрд╕рдВрдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдХреБрд▓ рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ "2 рджрд┐рди рдкрд░ рд▓рдЯреНрдЯреЗ рдХреЗ рдкреНрдпрд╛рд▓реЗ"ред рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡ cnt [2, 'рд▓рдЯреНрдЯреЗ'] рдирд╣реАрдВ рдорд┐рд▓рд╛ рдерд╛ , рд╣рдореЗрдВ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ NULL рдорд┐рд▓рд╛ред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ IGNORE NAV рдирд┐рд░реНрджреЗрд╢ (MODEL рд╢рдмреНрдж рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛) рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рддрддреНрд╡реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ NULL, рдЧрдгрдирд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рдПрдЧреА: 0 рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛, 1 рдЬрдирд╡рд░реА 2001, рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП NULLред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЪреМрдерд╛ рдирд┐рдпрдо IS PRESENT рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИ рдЕрдЧрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрддреНрд╡ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдмреБрдзрд╡рд╛рд░ рдХреЛ рдирд╢реЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред



рдЗрд╕ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрджрдд рд╣реЛ рдЧрдИред рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди, рдореЙрдбрд▓ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ, рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред



рдФрд░ рдкрдврд╝реЗрдВ



рд╕рд╛рд╣рд┐рддреНрдп

  1. Oracle┬о Database Data Warehousing Guide 11g рд░рд┐рд▓реАрдЬрд╝ 2 - рдЕрдзреНрдпрд╛рдп 22 "рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП SQL"ред рдПрдЪрдЯреАрдПрдордПрд▓
  2. Oracle рдбрд╛рдЯрд╛рдмреЗрд╕ 10g рдХрд╛ SQL рдореЙрдбрд▓ рдХреНрд▓реЙрдЬред рдкреАрдбреАрдПрдл



All Articles