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 рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред
рд░рдВрдЧ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг
рдКрдкрд░, рд╣рдордиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдореЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рд░реНрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рддреАрдХрд╛рддреНрдордХ (рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рддреАрдп рдереЗ)ред рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- cnt [рджрд┐рди <6, рдЯрд╛рдЗрдк рдХрд░реЗрдВ 'latt%']
- cnt [рджрд┐рди IN (3, 6), cv (рдкреНрд░рдХрд╛рд░)]
- cnt [рджрд┐рди BETWEEN 1 рдФрд░ 16, regexp_like (рдкреНрд░рдХрд╛рд░, '^ред + (ste tte) $')]
- cnt [2, 'рдмреНрд▓реИрдХ']
- cnt [7, 'рд▓рдЯреНрдЯреЗ']
рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди рдХреЙрдлреА рдХреЗ рдирд╢реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
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 рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИ рдЕрдЧрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрддреНрд╡ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдмреБрдзрд╡рд╛рд░ рдХреЛ рдирд╢реЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред
рдЗрд╕ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрджрдд рд╣реЛ рдЧрдИред рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди, рдореЙрдбрд▓ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ, рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдФрд░ рдкрдврд╝реЗрдВ