Sie sind auf Seite 1von 69

From: "Saved by Windows Internet Explorer 8" Subject: Analytic functions by Example | Oracle FAQ Date: Wed, 26 Jan

2011 21:30:42 +0530 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0022_01CBBDA0.49215790" X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7600.16543 This is a multi-part message in MIME format. ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.orafaq.com/forum/banner/logo.jpg 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 /9k= ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.orafaq.com/files/pictures/picture-9.jpg /9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMP FB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEc ITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgA VQA2AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMC BAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5 +v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwAB AgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpD REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMR AD8A4V2IB6ViajriQSeWo3uBjrwKs6peSWtmzKhDEYBNccxLsSTyec1w0KXPrI2qStsXZtWvJmJD 7R6LVV5ZHwS5PrTEBJwuenapIbWe5IWKJnJOOBXZaMTPVmjp2uz2MZQE84w3pzXX6N4sjkU20jnz JD8uccmuJu9Fv7GMSTwMqmqttK0FzHKOqMCM1m4RlrFlXcdGj2neXhRmyCRRWbDqxv8ATbe5tYy+ 4cgdiKKz5raAlfU43xRJ+4jXPJPSsPS9OOo3ixjIXqTWp4nBLRkdBUvg3YLmWSQ4VRRB8tG6LjFO okzt9G8E6YVR2hLNjGSa6608I2ljDut7ZUXrwKo6Tqmno8aPc7C3qpx+ddfPqFnbacXluCUGSdq5

rCKctZM9L3EvdRw+s6bHLG0bICDwa8a1uwOn6jJD/DnK17Ve6tbzoZYoJ9meCyYz74rzbxrAkk1v NH96Q7cVdC8JWZzYnlnG6NHwPcEaQ8bghRISp9aKt6bbNpGlwx+XEWYZORk0U5T1OdUbowNWC3Fs 3yk45zWtpGgiz1F0jUtDJEki+5IqreXFuqNbnCysMBSOa3PDWomSKx87H7tWiJ+hrNNqFjSkk5am vaWd0IyJ5WKgZCbBgH1rSCNLpojZiVVj+XatO4u7QWpVI1LFcbj/AEqpbXUQ0ww/ZpTJnrmnq9js jCMdDNfw48zLIpfOByG4NV7vRYJNUtFnRcrJu9sgV1FrqqQwLGecLggjpXN6neCTUYpW3BA3ah7k tQirkWovapMfN2qucAH2oqgYmuriTz/nAOV+XoDRV69jjbi3dsxrXTJLy5CxRl5G/iPb8a6BfCC6 HYHUMl5N+6UDOAv/AOuu7ttPt1UQwxIic5IGOn/16r6qG/sC6XGWWNlxXTHDqMXzHKq7clY5lZY7 pAiSlSRwVPSrcNrdLEUzMxPVs8fnXCxTXVjsmjLMuK3IvFtyIdqEDjkVxp2PRU11RryMunp88jM7 dSzZqkhGqzyiH5vITcAvc1hyXdzq118xIReuK6PwPbMt3dyEfLkKKuklKdjCtN8jZlw34Xes8bI6 tjGD2orvb3QrO9K+bCm7khun1orp9jI41Vj1NCMmC4O84RlAHsaS7h3rPF1EyEj61aljRsAjqagu bVsDy5GU4+XnpXU1dGMWk7nnstikDPDIvAPGaz/7OtlY43DPau8exjvoiJkAmXgkVQfQowcHmvKq QcXZnuUnGpFNHMw28VvHsiXLMa7TQLD7HaRggb3YscVHZ6LDE4cjc3bPatuCBmfKPhVHHFdOGpv4 mcWNml7iJ57WKeFY5cgA5BBxRTTbeaoMjFjRXYedoRNeZZfk/Wllu/lB2dD60UUwKN5dCKN5lj+Z RnrVb7YWyxTJ+tFFYV0jvwbd2Wra53c7P1q7FdBQ2I/1oorWKtFHJWbc3ckW7+QDZ+tFFFMyP//Z ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.orafaq.com/forum/banner/backgr.gif R0lGODlhAgBvAKUmAHKWunuVvXWbvHucvYSdvYSdxIucvIKiw4Wivoehwoaiw4KmwYqixImmx5Cl xYyqxZSqzJOtxZyuxZutzpaxy6K1zp26z6S8zaS71Ku7zqq62qu+1a6+2KzEzKzF4rPF1rPE3bPM 3e/v9fPz9/3+9/v///////////////////////////////////////////////////////////// /////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN UAAh+QQBCgA/ACwAAAAAAgBvAAAGbEASqUQsmUwjUSYzaA4UCkZiSq1ar9isFlooOBybDsbSJBA2 ms0GgWhiKpwP5OEkTCSgD8QREEAiIB8SEgAADw0fHxUVUwQFCQdXZgsIFxccHAUGAwEWFYlfAQEU FCEeEQ9mVgVQUFqvsLGxQQA7 ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://www.orafaq.com/modules/aggregator/aggregator.css?0 #aggregator .feed-source .feed-title { MARGIN-TOP: 0px } #aggregator .feed-source .feed-image IMG { MARGIN-BOTTOM: 0.75em } #aggregator .feed-source .feed-icon { DISPLAY: block; FLOAT: right } #aggregator .feed-item { MARGIN-BOTTOM: 1.5em } #aggregator .feed-item-title { MARGIN-BOTTOM: 0px; FONT-SIZE: 1.3em } #aggregator .feed-item-meta { MARGIN-BOTTOM: 0.5em } #aggregator .feed-item-body { MARGIN-BOTTOM: 0.5em } #aggregator .feed-item-categories { FONT-SIZE: 0.9em } #aggregator TD { VERTICAL-ALIGN: bottom }

#aggregator TD.categorize-item { WHITE-SPACE: nowrap } #aggregator .categorize-item .news-item .body { MARGIN-TOP: 0px } #aggregator .categorize-item H3 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 1em } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/book/book.css?0 .book-navigation .menu { PADDING-BOTTOM: 0px; PADDING-LEFT: 3em; PADDING-RIGHT: 0px; BORDER-TOP: = #888 1px solid; PADDING-TOP: 1em } .book-navigation .page-links { BORDER-BOTTOM: #888 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: = 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #888 1px = solid; PADDING-TOP: 0.5em } .book-navigation .page-previous { TEXT-ALIGN: left; WIDTH: 42%; DISPLAY: block; FLOAT: left } .book-navigation .page-up { MARGIN: 0px 5%; WIDTH: 4%; DISPLAY: block; FLOAT: left } .book-navigation .page-next { TEXT-ALIGN: right; WIDTH: 42%; DISPLAY: block; FLOAT: right } #book-outline { MIN-WIDTH: 56em } .book-outline-form .form-item { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } #edit-book-bid-wrapper .description { CLEAR: both } #book-admin-edit SELECT { MARGIN-RIGHT: 24px } #book-admin-edit SELECT.progress-disabled { MARGIN-RIGHT: 0px } #book-admin-edit TR.ahah-new-content { BACKGROUND-COLOR: #ffd } #book-admin-edit .form-item { FLOAT: left } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/node/node.css?0

.node-unpublished { BACKGROUND-COLOR: #fff4f4 } .preview .node { BACKGROUND-COLOR: #ffffea } #node-admin-filter UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #node-admin-buttons { FLOAT: left; MARGIN-LEFT: 0.5em; CLEAR: right } TD.revision-current { BACKGROUND: #ffc } .node-form .form-text { WIDTH: 95%; DISPLAY: block } .node-form .container-inline .form-text { WIDTH: auto; DISPLAY: inline } .node-form .standard { CLEAR: both } .node-form TEXTAREA { WIDTH: 95%; DISPLAY: block } .node-form .attachments FIELDSET { DISPLAY: block; FLOAT: none } .terms-inline { DISPLAY: inline } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/system/defaults.css?0 FIELDSET { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = MARGIN-BOTTOM: 1em; PADDING-TOP: 0.5em } FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } HR { BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; HEIGHT: = 1px; BORDER-TOP: gray 1px solid; BORDER-RIGHT: gray 1px solid } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px } TABLE { BORDER-COLLAPSE: collapse }

TH { BORDER-BOTTOM: #ccc 3px solid; TEXT-ALIGN: left; PADDING-RIGHT: 1em } .clear-block:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } .clear-block { DISPLAY: inline-block } * HTML .clear-block { HEIGHT: 1% } .clear-block { DISPLAY: block } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/system/system.css?0 BODY.drag { CURSOR: move } TH.active IMG { DISPLAY: inline } TR.even { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0.1em; = #eee; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: } TR.odd { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0.1em; = #eee; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: } TR.drag { BACKGROUND-COLOR: #fffff0 } TR.drag-previous { BACKGROUND-COLOR: #ffd } TD.active { BACKGROUND-COLOR: #ddd } TD.checkbox { TEXT-ALIGN: center } TH.checkbox { TEXT-ALIGN: center } TBODY { BORDER-TOP: #ccc 1px solid } TBODY TH { BORDER-BOTTOM: #ccc 1px solid } THEAD TH {

BACKGROUND-COLOR: 0.1em BACKGROUND-COLOR: 0.1em

BORDER-BOTTOM: #ccc 3px solid; TEXT-ALIGN: left; PADDING-RIGHT: 1em } .breadcrumb { PADDING-BOTTOM: 0.5em } DIV.indentation { PADDING-BOTTOM: 0.42em; MARGIN: -0.4em 0.2em -0.4em -0.4em; = PADDING-LEFT: 0.6em; WIDTH: 20px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 1.7em; PADDING-TOP: 0.42em } DIV.tree-child { BACKGROUND: url(../../misc/tree.png) no-repeat 11px center } DIV.tree-child-last { BACKGROUND: url(../../misc/tree-bottom.png) no-repeat 11px center } DIV.tree-child-horizontal { BACKGROUND: url(../../misc/tree.png) no-repeat -11px center } .error { COLOR: #e55 } DIV.error { BORDER-BOTTOM: #d77 1px solid; BORDER-LEFT: #d77 1px solid; BORDER-TOP: = #d77 1px solid; BORDER-RIGHT: #d77 1px solid } DIV.error { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #fcc; COLOR: #200; PADDING-TOP: 2px } TR.error { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #fcc; COLOR: #200; PADDING-TOP: 2px } .warning { COLOR: #e09010 } DIV.warning { BORDER-BOTTOM: #f0c020 1px solid; BORDER-LEFT: #f0c020 1px solid; = BORDER-TOP: #f0c020 1px solid; BORDER-RIGHT: #f0c020 1px solid } DIV.warning { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #ffd; COLOR: #220; PADDING-TOP: 2px } TR.warning { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #ffd; COLOR: #220; PADDING-TOP: 2px } .ok { COLOR: #008000 } DIV.ok { BORDER-BOTTOM: #00aa00 1px solid; BORDER-LEFT: #00aa00 1px solid; = BORDER-TOP: #00aa00 1px solid; BORDER-RIGHT: #00aa00 1px solid

} DIV.ok { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #dfd; COLOR: #020; PADDING-TOP: 2px } TR.ok { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: = #dfd; COLOR: #020; PADDING-TOP: 2px } .item-list .icon { PADDING-LEFT: 0.25em; FLOAT: right; COLOR: #555; CLEAR: right } .item-list .title { FONT-WEIGHT: bold } .item-list UL { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0.75em; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .item-list UL LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; MARGIN: 0px 0px 0.25em = 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } OL.task-list LI.active { FONT-WEIGHT: bold } .form-item { MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em } TR.odd .form-item { MARGIN-TOP: 0px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 0px } TR.even .form-item { MARGIN-TOP: 0px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 0px } TR.merge-down { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-down TD { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-down TH { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-up { BORDER-TOP-WIDTH: 0px !important } TR.merge-up TD { BORDER-TOP-WIDTH: 0px !important } TR.merge-up TH { BORDER-TOP-WIDTH: 0px !important } .form-item INPUT.error { BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item TEXTAREA.error {

BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item SELECT.error { BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item .description { FONT-SIZE: 0.85em } .form-item LABEL { DISPLAY: block; FONT-WEIGHT: bold } .form-item LABEL.option { DISPLAY: inline; FONT-WEIGHT: normal } .form-checkboxes { MARGIN: 1em 0px } .form-radios { MARGIN: 1em 0px } .form-checkboxes .form-item { MARGIN-TOP: 0.4em; MARGIN-BOTTOM: 0.4em } .form-radios .form-item { MARGIN-TOP: 0.4em; MARGIN-BOTTOM: 0.4em } .marker { COLOR: #f00 } .form-required { COLOR: #f00 } .more-link { TEXT-ALIGN: right } .more-help-link { TEXT-ALIGN: right; FONT-SIZE: 0.85em } .nowrap { WHITE-SPACE: nowrap } .item-list .pager { TEXT-ALIGN: center; CLEAR: both } .item-list .pager LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0.5em; LIST-STYLE-TYPE: none; = PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; DISPLAY: inline; PADDING-TOP: = 0.5em } .pager-current { FONT-WEIGHT: bold } .tips { PADDING-BOTTOM: 0px; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; FONT-SIZE: = 0.9em; PADDING-TOP: 0px } DL.multiselect DD.b { WIDTH: 14em; FONT-FAMILY: inherit; FONT-SIZE: inherit

} DL.multiselect DD.b .form-item { WIDTH: 14em; FONT-FAMILY: inherit; FONT-SIZE: inherit } DL.multiselect DD.b SELECT { WIDTH: 14em; FONT-FAMILY: inherit; FONT-SIZE: inherit } DL.multiselect DD.a { WIDTH: 8em } DL.multiselect DD.a .form-item { WIDTH: 8em } DL.multiselect DT { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.75em; MARGIN: 0px 1em 0px 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } DL.multiselect DD { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.75em; MARGIN: 0px 1em 0px 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } DL.multiselect .form-item { MARGIN: 0px; HEIGHT: 1.75em } .container-inline DIV { DISPLAY: inline } .container-inline LABEL { DISPLAY: inline } UL.primary { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: = normal; LIST-STYLE-TYPE: none; MARGIN: 5px; PADDING-LEFT: 1em; = PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; WHITE-SPACE: nowrap; = HEIGHT: auto; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.primary LI { DISPLAY: inline } UL.primary LI A { BORDER-BOTTOM: #bbb 1px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: = 0px; BACKGROUND-COLOR: #ddd; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; = HEIGHT: auto; BORDER-TOP: #bbb 1px solid; MARGIN-RIGHT: 0.5em; = BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } UL.primary LI.active A { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #bbb 1px solid; = BACKGROUND-COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb = 1px solid } UL.primary LI A:hover { BORDER-BOTTOM-COLOR: #eee; BACKGROUND-COLOR: #eee; BORDER-TOP-COLOR: = #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } UL.secondary { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 0.5em; MARGIN: 5px; = PADDING-LEFT: 1em; PADDING-RIGHT: 1em; PADDING-TOP: 0.5em } UL.secondary LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; DISPLAY: =

inline; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } UL.secondary A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 0px } UL.secondary A.active { BORDER-BOTTOM: #999 4px solid } #autocomplete { Z-INDEX: 100; BORDER-BOTTOM: 1px solid; POSITION: absolute; = BORDER-LEFT: 1px solid; OVERFLOW: hidden; BORDER-TOP: 1px solid; = BORDER-RIGHT: 1px solid } #autocomplete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #autocomplete LI { WHITE-SPACE: pre; BACKGROUND: #fff; COLOR: #000; CURSOR: default } #autocomplete LI.selected { BACKGROUND: #0072b9; COLOR: #fff } HTML.js INPUT.form-autocomplete { BACKGROUND-IMAGE: url(../../misc/throbber.gif); BACKGROUND-REPEAT: = no-repeat; BACKGROUND-POSITION: 100% 2px } HTML.js INPUT.throbbing { BACKGROUND-POSITION: 100% -18px } HTML.js FIELDSET.collapsed { BORDER-RIGHT-WIDTH: 0px; MARGIN-BOTTOM: 0px; BORDER-BOTTOM-WIDTH: 0px; = HEIGHT: 1em; BORDER-LEFT-WIDTH: 0px } HTML.js FIELDSET.collapsed * { DISPLAY: none } HTML.js FIELDSET.collapsed LEGEND { DISPLAY: block } HTML.js FIELDSET.collapsible LEGEND A { PADDING-LEFT: 15px; BACKGROUND: url(../../misc/menu-expanded.png) = no-repeat 5px 75% } HTML.js FIELDSET.collapsed LEGEND A { BACKGROUND-IMAGE: url(../../misc/menu-collapsed.png); = BACKGROUND-POSITION: 5px 50% } * HTML.js FIELDSET.collapsed LEGEND { DISPLAY: inline } * HTML.js FIELDSET.collapsed LEGEND * { DISPLAY: inline } * HTML.js FIELDSET.collapsed TABLE * { DISPLAY: inline } HTML.js FIELDSET.collapsible { POSITION: relative

} HTML.js FIELDSET.collapsible LEGEND A { DISPLAY: block } HTML.js FIELDSET.collapsible .fieldset-wrapper { OVERFLOW: auto } .resizable-textarea { WIDTH: 95% } .resizable-textarea .grippie { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND: = url(../../misc/grippie.png) #eee no-repeat center 2px; HEIGHT: 9px; = OVERFLOW: hidden; BORDER-TOP: #ddd 0px solid; CURSOR: s-resize; = BORDER-RIGHT: #ddd 1px solid } HTML.js .resizable-textarea TEXTAREA { WIDTH: 100%; DISPLAY: block; MARGIN-BOTTOM: 0px } .draggable A.tabledrag-handle { PADDING-BOTTOM: 0.42em; MARGIN: -0.4em 0px -0.4em -0.5em; PADDING-LEFT: = 0.5em; PADDING-RIGHT: 1.5em; FLOAT: left; HEIGHT: 1.7em; CURSOR: move; = TEXT-DECORATION: none; PADDING-TOP: 0.42em } A.tabledrag-handle:hover { TEXT-DECORATION: none } A.tabledrag-handle .handle { MARGIN-TOP: 4px; WIDTH: 13px; BACKGROUND: url(../../misc/draggable.png) = no-repeat 0px 0px; HEIGHT: 13px } A.tabledrag-handle-hover .handle { BACKGROUND-POSITION: 0px -20px } .joined + .grippie { BACKGROUND-POSITION: center 1px; MARGIN-BOTTOM: -2px; HEIGHT: 5px } .teaser-checkbox { PADDING-TOP: 1px } DIV.teaser-button-wrapper { MARGIN: 0px; PADDING-RIGHT: 5%; FLOAT: right } .teaser-checkbox DIV.form-item { PADDING-BOTTOM: 0px; MARGIN: 0px 5% 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } TEXTAREA.teaser { DISPLAY: none } HTML.js .no-js { DISPLAY: none } .progress { FONT-WEIGHT: bold } .progress .bar {

BORDER-BOTTOM: #00375a 1px solid; BORDER-LEFT: #00375a 1px solid; = MARGIN: 0px 0.2em; BACKGROUND: url(../../misc/progress.gif) #fff; = HEIGHT: 1.5em; BORDER-TOP: #00375a 1px solid; BORDER-RIGHT: #00375a 1px = solid } .progress .filled { BORDER-BOTTOM: #004a73 0.5em solid; WIDTH: 0%; BACKGROUND: #0072b9; = HEIGHT: 1em } .progress .percentage { FLOAT: right } .progress-disabled { FLOAT: left } .ahah-progress { FLOAT: left } .ahah-progress .throbber { MARGIN: 2px; WIDTH: 15px; BACKGROUND: url(../../misc/throbber.gif) = no-repeat 0px -18px; FLOAT: left; HEIGHT: 15px } TR .ahah-progress .throbber { MARGIN: 0px 2px } .ahah-progress-bar { WIDTH: 16em } #first-time STRONG { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; PADDING-TOP: 1.5em } TR.selected TD { BACKGROUND: #ffc } TABLE.sticky-header { MARGIN-TOP: 0px; BACKGROUND: #fff } .install#clean-url { DISPLAY: none } HTML.js .js-hide { DISPLAY: none } #system-modules DIV.incompatible { FONT-WEIGHT: bold } #system-themes-form DIV.incompatible { FONT-WEIGHT: bold } SPAN.password-strength { VISIBILITY: hidden } INPUT.password-field { MARGIN-RIGHT: 10px } DIV.password-description { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 2px; = PADDING-RIGHT: 2px; MAX-WIDTH: 500px; FONT-SIZE: 0.85em; PADDING-TOP: = 0px

} DIV.password-description UL { MARGIN-BOTTOM: 0px } .password-parent { MARGIN: 0px } INPUT.password-confirm { MARGIN-RIGHT: 10px } .confirm-parent { MARGIN: 5px 0px 0px } SPAN.password-confirm { VISIBILITY: hidden } SPAN.password-confirm SPAN { FONT-WEIGHT: normal } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/system/system-menus.css?0 UL.menu { BORDER-BOTTOM: medium none; TEXT-ALIGN: left; BORDER-LEFT: medium none; = LIST-STYLE-TYPE: none; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; = BORDER-RIGHT: medium none } UL.menu LI { MARGIN: 0px 0px 0px 0.5em } LI.expanded { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-expanded.png); PADDING-TOP: 0.2em } LI.collapsed { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-collapsed.png); PADDING-TOP: 0.2em } LI.leaf { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-leaf.png); PADDING-TOP: 0.2em } LI A.active { COLOR: #000 } TD.menu-disabled { BACKGROUND: #ccc } UL.links { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } UL.inline.links {

DISPLAY: inline } UL.links LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; DISPLAY: inline; PADDING-TOP: 0px } .block UL { PADDING-BOTTOM: 0.25em; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/modules/user/user.css?0 #permissions TD.module { FONT-WEIGHT: bold } #permissions TD.permission { PADDING-LEFT: 1.5em } #access-rules .access-type { FLOAT: left; MARGIN-RIGHT: 1em } #access-rules .rule-type { FLOAT: left; MARGIN-RIGHT: 1em } #access-rules .access-type .form-item { MARGIN-TOP: 0px } #access-rules .rule-type .form-item { MARGIN-TOP: 0px } #access-rules .mask { CLEAR: both } #user-login-form { TEXT-ALIGN: center } #user-admin-filter UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #user-admin-buttons { FLOAT: left; MARGIN-LEFT: 0.5em; CLEAR: right } #user-admin-settings FIELDSET .description { PADDING-BOTTOM: 0.5em; FONT-SIZE: 0.85em } .profile { MARGIN: 1em 0px; CLEAR: both } .profile .picture { MARGIN: 0px 1em 1em 0px; FLOAT: right } .profile H3 { BORDER-BOTTOM: #ccc 1px solid } .profile DL {

MARGIN: 0px 0px 1.5em } .profile DT { MARGIN: 0px 0px 0.2em; FONT-WEIGHT: bold } .profile DD { MARGIN: 0px 0px 1em } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://www.orafaq.com/modules/comment/comment.css?0 .indented { MARGIN-LEFT: 25px } .comment-unpublished { BACKGROUND-COLOR: #fff4f4 } .preview .comment { BACKGROUND-COLOR: #ffffea } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/themes/orafaq/style.css?0 HTML { FONT-SIZE: 100% } BODY { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px } BODY { FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, = Verdana, sans-serif; COLOR: #333 } TD { FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, = Verdana, sans-serif; COLOR: #333 } LI { FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, = Verdana, sans-serif; COLOR: #333 } UL { FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, = Verdana, sans-serif; COLOR: #333 } OL { FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, =

Verdana, sans-serif; COLOR: #333 } IMG.bb-image { MAX-WIDTH: 100% } H1 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H2 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H3 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H4 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H5 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H6 { MARGIN: 0px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, = SunSans-Regular, Verdana, sans-serif } H1 { COLOR: #369; FONT-SIZE: 1.5em } H1.title { LETTER-SPACING: -1.1pt; FONT-SIZE: 1.7em; FONT-WEIGHT: bold } H1.subtitle { FONT-SIZE: 1.2em } TR.odd TD { PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; PADDING-RIGHT: 0.2em; = PADDING-TOP: 0.2em } TR.even TD { PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; PADDING-RIGHT: 0.2em; = PADDING-TOP: 0.2em } A:link { COLOR: #ff8c00; FONT-WEIGHT: bold; TEXT-DECORATION: none } A:visited { COLOR: #c96; FONT-WEIGHT: bold; TEXT-DECORATION: none } A:hover { COLOR: #ff4500; FONT-WEIGHT: bold; TEXT-DECORATION: underline } A:active { COLOR: #ff4500; FONT-WEIGHT: bold; TEXT-DECORATION: underline } FIELDSET { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP:

= #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1.2em; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { TEXT-ALIGN: left; BORDER-LEFT: #69c 4px solid; PADDING-BOTTOM: 0px; = LINE-HEIGHT: 1.4em; MARGIN: 25px 100px 25px 50px; PADDING-LEFT: 15px; = PADDING-RIGHT: 15px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, = Helvetica, SunSans-Regular, Verdana, sans-serif; COLOR: #696969; = FONT-SIZE: 1em; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: #bfd0d9 1px solid; BORDER-LEFT: #bfd0d9 4px solid; = PADDING-BOTTOM: 0.5em; LINE-HEIGHT: 1.5em; MIN-HEIGHT: 3em; = PADDING-LEFT: 0.5em; WIDTH: 100%; PADDING-RIGHT: 0.5em; FONT-FAMILY: = "Bitstream Vera Sans Mono", Courier New, monospace; WHITE-SPACE: pre; = BACKGROUND: #f8fbfc; COLOR: #000; CLEAR: both; FONT-SIZE: 0.75em; = OVERFLOW: auto; BORDER-TOP: #bfd0d9 1px solid; BORDER-RIGHT: #bfd0d9 1px = solid; PADDING-TOP: 0.5em; _overflow-x: scroll; _overflow-y: hidden } .form-item { MARGIN-TOP: 1em } .form-item LABEL { COLOR: #369 } .item-list .title { COLOR: #369; FONT-SIZE: 0.85em } #primary-menu { BORDER-BOTTOM: #69c 3px solid; BACKGROUND-COLOR: #e0edfb; = BORDER-COLLAPSE: separate } #primary-menu TR { BACKGROUND: url(header-a.jpg) left bottom } TD#home A:hover IMG { WIDTH: 144px; HEIGHT: 63px } .primary-links { COLOR: #369 } .primary-links A:link { COLOR: #369 } .primary-links A:visited { COLOR: #369 } .primary-links A:hover { COLOR: #000 } #primary-menu .primary-links { BACKGROUND: url(header-b.jpg) no-repeat left top; FONT-SIZE: 0.79em } #primary-menu .primary-links H1 { COLOR: #369; FONT-SIZE: 2.3em }

#primary-menu .primary-links H2 { COLOR: #369; FONT-SIZE: 2.3em } #primary-menu .primary-links H3 { COLOR: #369; FONT-SIZE: 2.3em } #secondary-menu { BORDER-BOTTOM: #69c 3px solid; BACKGROUND-COLOR: #369; BORDER-COLLAPSE: = separate } .secondary-links { COLOR: #e4e9eb } .secondary-links A:link { COLOR: #e4e9eb } .secondary-links A:visited { COLOR: #e4e9eb } .secondary-links A:hover { COLOR: #fff; TEXT-DECORATION: underline } #secondary-menu .secondary-links { FONT-SIZE: 0.85em } .tabs { MARGIN: 15px 0px } .tabs UL.primary { BORDER-BOTTOM: #336699 2px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: = normal; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 10px; = PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; WHITE-SPACE: nowrap; = HEIGHT: auto; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .tabs UL.primary LI { DISPLAY: inline } .tabs UL.primary LI A { BORDER-BOTTOM: #6699cc 2px; BORDER-LEFT: #6699cc 2px; PADDING-BOTTOM: = 3px; TEXT-TRANSFORM: lowercase; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = BACKGROUND: url(tabs-off.png) #fff no-repeat left top; HEIGHT: auto; = BORDER-TOP: #6699cc 2px; MARGIN-RIGHT: 10px; BORDER-RIGHT: #6699cc 2px = solid; TEXT-DECORATION: none; PADDING-TOP: 3px } .tabs UL.primary LI.active A { BACKGROUND: url(tabs-on.png) #336699 no-repeat left top; COLOR: #fff; = BORDER-RIGHT: #336699 2px solid } .tabs UL.primary LI A:hover { BACKGROUND-COLOR: #fffaf0; COLOR: #ff4500 } .tabs UL.secondary { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 10px; LINE-HEIGHT: normal; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; = PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; WHITE-SPACE: nowrap; = HEIGHT: auto; LIST-STYLE-IMAGE: none; PADDING-TOP: 10px } .tabs UL.secondary LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; DISPLAY: =

inline; HEIGHT: auto; BORDER-RIGHT: medium none; TEXT-DECORATION: none; = PADDING-TOP: 0px } .tabs UL.secondary LI A { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 25px; PADDING-RIGHT: = 0px; BACKGROUND: url(tabs-option-off.png) #fff no-repeat left center; = PADDING-TOP: 10px } .tabs UL.secondary LI A.active { BORDER-BOTTOM: medium none; BACKGROUND: url(tabs-option-on.png) #fff = no-repeat left center; COLOR: #369 } .tabs UL.secondary LI A:hover { BACKGROUND: url(tabs-option-hover.png) #fff no-repeat left center; = COLOR: #ff4500 } #content { BACKGROUND-COLOR: #fff } #contentstart { BACKGROUND-COLOR: #fff } #menu { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; VERTICAL-ALIGN: middle; PADDING-TOP: 0.5em } #search .form-text { BORDER-BOTTOM: #369 1px solid; BORDER-LEFT: #369 1px solid; MARGIN: = 0.2em; FONT-SIZE: 0.85em; BORDER-TOP: #369 1px solid; BORDER-RIGHT: #369 = 1px solid } #search .form-submit { BORDER-BOTTOM: #369 1px solid; BORDER-LEFT: #369 1px solid; MARGIN: = 0.2em; FONT-SIZE: 0.85em; BORDER-TOP: #369 1px solid; BORDER-RIGHT: #369 = 1px solid } #search .form-text { WIDTH: 9em } #search .form-submit { HEIGHT: 1.5em } #mission { BORDER-BOTTOM: #dcdcdc 2px solid; PADDING-BOTTOM: 10px; = BACKGROUND-COLOR: #fff; MARGIN: 20px 35px 0px; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; FONT-FAMILY: "Trebuchet MS", Geneva, Arial, = Helvetica, SunSans-Regular, Verdana, sans-serif; COLOR: #696969; = FONT-SIZE: 1.1em; BORDER-TOP: #dcdcdc 2px solid; FONT-WEIGHT: normal; = PADDING-TOP: 10px } #site-info { BACKGROUND-IMAGE: url(header-c.png); BACKGROUND-COLOR: #bdd3ea; = FONT-FAMILY: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, = Verdana, sans-serif } .site-name { FONT-SIZE: 1.2em } .site-name A:link { COLOR: #fff

} .site-name A:visited { COLOR: #fff } .site-name A:hover { COLOR: #ff8c00; TEXT-DECORATION: none } .site-slogan { FONT-SIZE: 0.8em; FONT-WEIGHT: bold } #main { POSITION: relative; MIN-WIDTH: 354px; PADDING-BOTTOM: 30px; = PADDING-LEFT: 5px; PADDING-RIGHT: 20px; PADDING-TOP: 2px } #mission { LINE-HEIGHT: 1.4 } .node .content { LINE-HEIGHT: 1.4 } .comment .content { LINE-HEIGHT: 1.4 } #help { MARGIN-BOTTOM: 1em; FONT-SIZE: 0.9em } .breadcrumb { MARGIN-BOTTOM: 0.1em; FONT-SIZE: 0.65em } .messages { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0.3em; BACKGROUND-COLOR: #eee; PADDING-LEFT: 0.3em; = PADDING-RIGHT: 0.3em; MARGIN-BOTTOM: 1em; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.3em } .error { BORDER-BOTTOM-COLOR: red; BORDER-TOP-COLOR: red; BORDER-RIGHT-COLOR: = red; BORDER-LEFT-COLOR: red } .nav { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #sidebar-left { PADDING-BOTTOM: 70px; PADDING-LEFT: 5px; WIDTH: 170px; PADDING-RIGHT: = 2px; BACKGROUND: #fffaf0; FONT-SIZE: 0.75em; VERTICAL-ALIGN: top; = PADDING-TOP: 5px } #sidebar-right { PADDING-BOTTOM: 70px; PADDING-LEFT: 5px; WIDTH: 170px; PADDING-RIGHT: = 5px; BACKGROUND: #fffaf0; FONT-SIZE: 0.7em; VERTICAL-ALIGN: top; = FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 25px } #sidebar-left { BORDER-RIGHT: #f5f5f5 3px solid } #sidebar-right { BORDER-LEFT: #f5f5f5 3px solid } #sidebar-left LI {

FONT-SIZE: 1em } #sidebar-right LI { FONT-SIZE: 1em } .node .content { TEXT-ALIGN: left; LINE-HEIGHT: 1.5; FONT-SIZE: 0.8em } .comment .content { TEXT-ALIGN: left; LINE-HEIGHT: 1.2; FONT-SIZE: 0.75em } #footer-message { TEXT-ALIGN: center; PADDING-BOTTOM: 30px; PADDING-LEFT: 100px; = PADDING-RIGHT: 100px; COLOR: #aaa; FONT-SIZE: 0.85em; PADDING-TOP: 15px } TABLE#footer-menu { BORDER-BOTTOM: #6699cc 3px solid; BACKGROUND-COLOR: #369; COLOR: = #e4e9eb; BORDER-TOP: #6699cc 3px solid } #footer-menu TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-SIZE: = 0.75em; PADDING-TOP: 5px } #footer-menu .primary-links { COLOR: #e4e9eb } #footer-menu A:link { COLOR: #e4e9eb } #footer-menu A:visited { COLOR: #e4e9eb } #footer-menu A:hover { COLOR: #fff; TEXT-DECORATION: underline } #footer-menu .primary-links H1 { COLOR: #e4e9eb; FONT-SIZE: 1.3em } #footer-menu .primary-links H2 { COLOR: #e4e9eb; FONT-SIZE: 1.3em } #footer-menu .primary-links H3 { COLOR: #e4e9eb; FONT-SIZE: 1.3em } #content .title { COLOR: #369 } #content .subtitle { COLOR: #369 } #content .title A { COLOR: #369 } #content .subtitle A { COLOR: #369 } .content H1 { COLOR: #369; FONT-SIZE: 1.9em } .content H2 {

COLOR: #58b; FONT-SIZE: 1.7em } .content H3 { COLOR: #69c; FONT-SIZE: 1.5em } .content H4 { COLOR: #8be; FONT-SIZE: 1.3em } .content H5 { COLOR: #96c6f6; FONT-SIZE: 1.15em } .submitted { COLOR: #999; FONT-SIZE: 0.72em } .links { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #ff8c00; FONT-SIZE: 0.8em; PADDING-TOP: 0px } .links A { FONT-WEIGHT: bold } .box { PADDING-BOTTOM: 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } .box { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .box H2 { FONT-SIZE: 9px } .block .title H3 { BORDER-BOTTOM: #6699cc 2px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: = 30px; PADDING-RIGHT: 5px; MARGIN-BOTTOM: 0.25em; BACKGROUND: = url(icon-database.png) no-repeat left center; COLOR: #369; FONT-SIZE: = 18px; FONT-WEIGHT: bold; PADDING-TOP: 15px; XXXbackground-size: 150% = auto } .block .content { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } .block { MARGIN-BOTTOM: 1.5em } .box .title { FONT-SIZE: 1.1em } .node { MARGIN: 0.5em 0px 1.5em } .node .content { MARGIN: 0.5em 0px } .comment .content { MARGIN: 0.5em 0px } .node .taxonomy { PADDING-BOTTOM: 1.5em; PADDING-LEFT: 1.5em; PADDING-RIGHT: 1.5em; =

COLOR: #999; FONT-SIZE: 0.83em; PADDING-TOP: 1.5em } .node .picture { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; MARGIN: = 0.1em; FLOAT: left; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #fff 1px = solid } .comment { BORDER-BOTTOM: #abc 1px solid; BORDER-LEFT: #abc 1px solid; = PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = MARGIN-BOTTOM: 1em; BORDER-TOP: #abc 1px solid; BORDER-RIGHT: #abc 1px = solid; PADDING-TOP: 0.5em } .comment .title { FONT-SIZE: 1em; XXXbackground: transparent url(icon-comment.png) left = center no-repeat } .comment .new { COLOR: red; MARGIN-LEFT: 2px; FONT-SIZE: 1em; FONT-WEIGHT: bold } .comment .picture { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; MARGIN: = 10px; FLOAT: right; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #fff 1px = solid } #edit-comment { WIDTH: 100% } .comment:hover { BACKGROUND-COLOR: #fffaf0 } .links { FONT-SIZE: 0.75em } .links .prev { FONT-SIZE: 1.15em } .links .next { FONT-SIZE: 1.15em } .links .up { FONT-SIZE: 1.15em } .titles .prev { COLOR: #444; FONT-SIZE: 0.85em; FONT-WEIGHT: bold } .titles .next { COLOR: #444; FONT-SIZE: 0.85em; FONT-WEIGHT: bold } .hide { DISPLAY: none } .nav .links .next A:link { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 17px; = BACKGROUND: url(arrow-next.png) no-repeat right center; PADDING-TOP: = 17px } .nav .links .next A:visited { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 17px; = BACKGROUND: url(arrow-next-visited.png) no-repeat right center; =

PADDING-TOP: 17px } .nav .links .next A:hover { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 17px; = BACKGROUND: url(arrow-next-hover.png) no-repeat right center; = PADDING-TOP: 17px } .nav .links .prev A:link { PADDING-BOTTOM: 17px; PADDING-LEFT: 17px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-prev.png) no-repeat left center; PADDING-TOP: 17px } .nav .links .prev A:visited { PADDING-BOTTOM: 17px; PADDING-LEFT: 17px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-prev-visited.png) no-repeat left center; = PADDING-TOP: 17px } .nav .links .prev A:hover { PADDING-BOTTOM: 17px; PADDING-LEFT: 17px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-prev-hover.png) no-repeat left center; = PADDING-TOP: 17px } .nav .links .up A:link { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-up.png) no-repeat center top; PADDING-TOP: 11px } .nav .links .up A:visited { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-up-visited.png) no-repeat center top; PADDING-TOP: = 11px } .nav .links .up A:hover { PADDING-BOTTOM: 17px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BACKGROUND: url(arrow-up-hover.png) no-repeat center top; PADDING-TOP: = 11px } .content .active { COLOR: #369 } #aggregator { FONT-SIZE: 0.8em } #aggregator .feed-source { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 1em; BACKGROUND-COLOR: #eee; MARGIN: 1em 0px; = PADDING-LEFT: 1em; PADDING-RIGHT: 1em; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1em } #aggregator .news-item .source { FONT-STYLE: italic; COLOR: #999; FONT-SIZE: 0.85em } #aggregator .title { FONT-SIZE: 1em } #aggregator H3 A { MARGIN-TOP: 1em; COLOR: #369 } #tracker TH { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #fafafa = 1px solid; BACKGROUND-COLOR: #f5f5f5; BORDER-RIGHT: #ddd 1px solid

} #tracker TH IMG { FLOAT: right } #tracker TR.even { BACKGROUND-COLOR: #fff } #tracker TR.odd { BACKGROUND-COLOR: #fff } #tracker TD { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; = PADDING-RIGHT: 1em; VERTICAL-ALIGN: top; PADDING-TOP: 1em } .block-forum H3 { MARGIN-BOTTOM: 0.5em } .book-navigation .menu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0px; = PADDING-TOP: 1em } .book-navigation LI.collapsed { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; PADDING-LEFT: 0px; = PADDING-RIGHT: 0.2em; LIST-STYLE-IMAGE: url(bullet-plus.png); = PADDING-TOP: 0.2em } .book-navigation LI.leaf { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; PADDING-LEFT: 0px; = PADDING-RIGHT: 0.2em; LIST-STYLE-IMAGE: url(bullet-dot.png); = PADDING-TOP: 0.2em } #user-login-form { TEXT-ALIGN: left } .top-left { BACKGROUND-IMAGE: url(corners1280x18.gif); HEIGHT: 9px; FONT-SIZE: 2px } .top-right { BACKGROUND-IMAGE: url(corners1280x18.gif); HEIGHT: 9px; FONT-SIZE: 2px } .bottom-left { BACKGROUND-IMAGE: url(corners1280x18.gif); HEIGHT: 9px; FONT-SIZE: 2px } .bottom-right { BACKGROUND-IMAGE: url(corners1280x18.gif); HEIGHT: 9px; FONT-SIZE: 2px } .top-left { MARGIN-RIGHT: 9px } .bottom-left { MARGIN-RIGHT: 9px } .top-right { MARGIN-TOP: -9px; MARGIN-LEFT: 9px } .bottom-right { MARGIN-TOP: -9px; MARGIN-LEFT: 9px } .top-right { BACKGROUND-POSITION: 100% 0px

} .bottom-left { BACKGROUND-POSITION: 0px -9px } .bottom-right { BACKGROUND-POSITION: 100% -9px } .inside { BORDER-LEFT: #c00000 1px solid; PADDING-LEFT: 10px; PADDING-RIGHT: = 10px; BACKGROUND: #efefef; COLOR: #000000; BORDER-RIGHT: #c00000 1px = solid } .notopgap { MARGIN-TOP: 0px } .nobottomgap { PADDING-BOTTOM: 1px; MARGIN-BOTTOM: -1px } ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.orafaq.com/admin/ads/www/delivery/lg.php?bannerid=1 &campaignid=1&zoneid=1&channel_ids=,&cb=e22cc2b7f9 R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js =0A= (function(){var g=3Dtrue,h=3Dnull,i=3Dfalse,j=3D(new Date).getTime();var = k=3Dthis,aa=3Dfunction(a,b,c){a=3Da.split(".");c=3Dc||k;!(a[0]in = c)&&c.execScript&&c.execScript("var "+a[0]);for(var = d;a.length&&(d=3Da.shift());)if(!a.length&&b!=3D=3Dundefined)c[d]=3Db;els= e c=3Dc[d]?c[d]:c[d]=3D{}},ba=3Dfunction(a){return = a.call.apply(a.bind,arguments)},ca=3Dfunction(a,b){var = c=3Db||k;if(arguments.length>2){var = d=3DArray.prototype.slice.call(arguments,2);return function(){var = f=3DArray.prototype.slice.call(arguments);Array.prototype.unshift.apply(f= ,d);return a.apply(c,f)}}else return function(){return a.apply(c,=0A= arguments)}},l=3Dfunction(){l=3DFunction.prototype.bind&&Function.prototy= pe.bind.toString().indexOf("native code")!=3D-1?ba:ca;return = l.apply(h,arguments)};var n=3Dfunction(a,b){var c=3DparseFloat(a);return = isNaN(c)||c>1||c<0?b:c},p=3Dfunction(a,b){if(a=3D=3D"true")return = g;if(a=3D=3D"false")return i;return = b},da=3D/^([\w-]+\.)*([\w-]{2,})(\:[0-9]+)?$/,fa=3Dfunction(a,b){if(!a)re= turn b;var c=3Da.match(da);return c?c[0]:b};var ga=3Dfunction(){return = fa("","pagead2.googlesyndication.com")},ha=3Dfunction(){return = fa("","pagead2.googlesyndication.com")};var = ia=3D/&/g,ja=3D/</g,ka=3D/>/g,la=3D/\"/g,t=3D{"\u0000":"\\0","\u0008":"\\= b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\x0B",'"':'= \\"',"\\":"\\\\"},u=3D{"'":"\\'"},v=3Dfunction(a,b){if(a<b)return-1;else = if(a>b)return 1;return 0};var y,A,B,C,D=3Dfunction(){return = k.navigator?k.navigator.userAgent:h};C=3DB=3DA=3Dy=3Di;var = F;if(F=3DD()){var = ma=3Dk.navigator;y=3DF.indexOf("Opera")=3D=3D0;A=3D!y&&F.indexOf("MSIE")!= =3D-1;B=3D!y&&F.indexOf("WebKit")!=3D-1;C=3D!y&&!B&&ma.product=3D=3D"Geck=

o"}var G=3DA,na=3DC,oa=3DB,H;=0A= a:{var I=3D"",J;if(y&&k.opera){var K=3Dk.opera.version;I=3Dtypeof = K=3D=3D"function"?K():K}else{if(na)J=3D/rv\:([^\);]+)(\)|;)/;else = if(G)J=3D/MSIE\s+([^\);]+)(\)|;)/;else = if(oa)J=3D/WebKit\/(\S+)/;if(J){var = pa=3DJ.exec(D());I=3Dpa?pa[1]:""}}if(G){var = L,qa=3Dk.document;L=3Dqa?qa.documentMode:undefined;if(L>parseFloat(I)){H=3D= String(L);break a}}H=3DI}=0A= var ra=3DH,sa=3D{},M=3Dfunction(a){var b;if(!(b=3Dsa[a])){b=3D0;for(var = c=3DString(ra).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),d=3DString= (a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),f=3DMath.max(c.length= ,d.length),e=3D0;b=3D=3D0&&e<f;e++){var = ta=3Dc[e]||"",s=3Dd[e]||"",m=3DRegExp("(\\d*)(\\D*)","g"),z=3DRegExp("(\\= d*)(\\D*)","g");do{var = q=3Dm.exec(ta)||["","",""],o=3Dz.exec(s)||["","",""];if(q[0].length=3D=3D= 0&&o[0].length=3D=3D0)break;b=3Dv(q[1].length=3D=3D0?0:parseInt(q[1],10),= o[1].length=3D=3D0?0:parseInt(o[1],10))||v(q[2].length=3D=3D=0A= 0,o[2].length=3D=3D0)||v(q[2],o[2])}while(b=3D=3D0)}b=3Dsa[a]=3Db>=3D0}re= turn b};!G||M("9");G&&M("9");var ua=3Ddocument,N=3Dwindow;ha();var = O=3Dfunction(a){return!!a&&typeof = a=3D=3D"function"&&!!a.call},va=3Dfunction(a){if(arguments.length<2)retur= n a.length;for(var = b=3D1,c=3Darguments.length;b<c;++b)a.push(arguments[b]);return = a.length};function P(a){return typeof = encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi= on wa(a,b){if(a.attachEvent){a.attachEvent("onload",b);return = g}if(a.addEventListener){a.addEventListener("load",b,i);return g}return = i}=0A= var xa=3Dfunction(a){if(!("google_onload_fired"in = a)){a.google_onload_fired=3Di;wa(a,function(){a.google_onload_fired=3Dg})= }};function ya(a,b){if(!(Math.random()<1.0E-4)){var = c=3DMath.random();if(c<b)return = a[Math.floor(c/b*a.length)]}return""};var = za=3Dn("0",0),Aa=3Dn("0",0),Ba=3Dn("0",0),Ca=3Dn("0.02",0);var = Da=3Dp("false",i),Ea=3Dp("false",i),Fa=3Dp("false",i);aa("google_protectA= ndRun",function(a,b,c){a=3Dl(b,k,a);b=3Dwindow.onerror;window.onerror=3Da= ;try{c()}catch(d){c=3Dd.toString();var = f=3D"";if(d.fileName)f=3Dd.fileName;var = e=3D-1;if(d.lineNumber)e=3Dd.lineNumber;if(!a(c,f,e))throw = d;}window.onerror=3Db},void 0);=0A= aa("google_handleError",function(a,b,c,d){if(Math.random()<0.01){a=3D["ht= tp://",ga(),"/pagead/gen_204","?id=3Djserror","&jscb=3D",Da?1:0,"&jscd=3D= ",Ea?1:0,"&context=3D",P(a),"&msg=3D",P(b),"&file=3D",P(c),"&line=3D",P(d= .toString()),"&url=3D",P(ua.URL.substring(0,512)),"&ref=3D",P(ua.referrer= .substring(0,512))];a.push(["&client=3D",P(N.google_ad_client),"&format=3D= ",P(N.google_ad_format),"&slotname=3D",P(N.google_ad_slot),"&output=3D",P= (N.google_ad_output),"&ad_type=3D",P(N.google_ad_type)].join(""));a=3Da.j= oin("");N.google_image_requests||=0A= (N.google_image_requests=3D[]);b=3Dnew = Image;b.src=3Da;N.google_image_requests.push(b)}return!Fa},void 0);var = Ha=3Dfunction(a){try{var = b=3Da.google_test;a.google_test=3D!b;if(a.google_test=3D=3D=3D!b){a.googl= e_test=3Db;return g}}catch(c){}return = i},Q=3Dh,Ia=3Dfunction(){if(!Q){for(var = a=3Dwindow;a!=3Da.parent&&Ha(a.parent);)a=3Da.parent;Q=3Da}return Q};var = R,S=3Dfunction(a){this.e=3D[];this.b=3Da||window;this.a=3D0;this.c=3Dh},J= a=3Dfunction(a,b){this.h=3Da;this.n=3Db};S.prototype.g=3Dfunction(a,b){th= is.e.push(new = Ja(a,b||this.b));T(this)};S.prototype.i=3Dfunction(a){this.a=3D1;if(a)thi= s.c=3Dthis.b.setTimeout(l(this.f,this),a)};S.prototype.f=3Dfunction(){if(=

this.a=3D=3D1){if(this.c!=3Dh){this.b.clearTimeout(this.c);this.c=3Dh}thi= s.a=3D0}T(this)};S.prototype.l=3Dfunction(){return = g};S.prototype.nq=3DS.prototype.g;S.prototype.al=3DS.prototype.i;S.protot= ype.rl=3DS.prototype.f;=0A= S.prototype.sz=3DS.prototype.l;var = T=3Dfunction(a){a.b.setTimeout(l(a.m,a),0)};S.prototype.m=3Dfunction(){if= (this.a=3D=3D0&&this.e.length){var = a=3Dthis.e.shift();this.a=3D2;a.n.setTimeout(l(this.j,this,a),0);T(this)}= };S.prototype.j=3Dfunction(a){this.a=3D0;a.h()};=0A= var Ka=3Dfunction(a){try{return a.sz()}catch(b){return = i}},La=3Dfunction(a){return!!a&&(typeof a=3D=3D"object"||typeof = a=3D=3D"function")&&Ka(a)&&O(a.nq)&&O(a.al)&&O(a.rl)},Ma=3Dfunction(){if(= R&&Ka(R))return R;var a=3DIa(),b=3Da.google_jobrunner;if(La(b))return = R=3Db;return a.google_jobrunner=3DR=3Dnew S(a)};var U,Na;Na=3DU=3Di;var = V=3DD();if(V)if(V.indexOf("Firefox")!=3D-1)U=3Dg;else = if(V.indexOf("Camino")=3D=3D-1)if(!(V.indexOf("iPhone")!=3D-1||V.indexOf(= "iPod")!=3D-1))if(V.indexOf("iPad")=3D=3D-1)if(V.indexOf("Android")=3D=3D= -1)if(V.indexOf("Chrome")!=3D-1)Na=3Dg;var Oa=3DU,Pa=3DNa;var = Qa=3Dfunction(a,b,c){var d=3D["<iframe"],f;for(f in = a)a.hasOwnProperty(f)&&va(d,f+"=3D"+a[f]);d.push('style=3D"left:0;positio= n:absolute;top:0;"');d.push("></iframe>");b=3D"border:none;height:"+c+"px= ;margin:0;padding:0;position:relative;visibility:visible;width:"+b+"px";r= eturn['<ins style=3D"display:inline-table;',b,'"><ins = id=3D"',a.id+"_anchor",'" style=3D"display:block;',b,'">',d.join(" = "),"</ins></ins>"].join("")};var = Ra=3Dfunction(){},Ta=3Dfunction(a,b,c){switch(typeof b){case = "string":Sa(a,b,c);break;case = "number":c.push(isFinite(b)&&!isNaN(b)?b:"null");break;case = "boolean":c.push(b);break;case "undefined":c.push("null");break;case = "object":if(b=3D=3Dh){c.push("null");break}if(b instanceof Array){var = d=3Db.length;c.push("[");for(var = f=3D"",e=3D0;e<d;e++){c.push(f);Ta(a,b[e],c);f=3D","}c.push("]");break}c.= push("{");d=3D"";for(f in b)if(b.hasOwnProperty(f)){e=3Db[f];if(typeof = e!=3D"function"){c.push(d);Sa(a,f,c);c.push(":");Ta(a,=0A= e,c);d=3D","}}c.push("}");break;case "function":break;default:throw = Error("Unknown type: "+typeof = b);}},Ua=3D{'"':'\\"',"\\":"\\\\","/":"\\/","\u0008":"\\b","\u000c":"\\f"= ,"\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\u000b"},Va=3D/\uffff/.test(= "\uffff")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g,Sa=3D= function(a,b,c){c.push('"');c.push(b.replace(Va,function(d){if(d in = Ua)return Ua[d];var = f=3Dd.charCodeAt(0),e=3D"\\u";if(f<16)e+=3D"000";else = if(f<256)e+=3D"00";else if(f<4096)e+=3D"0";return = Ua[d]=3De+f.toString(16)}));=0A= c.push('"')};var = W=3D["google_ad_block","google_ad_channel","google_ad_client","google_ad_= format","google_ad_height","google_ad_host","google_ad_host_channel","goo= gle_ad_host_tier_id","google_ad_output","google_ad_override","google_ad_r= egion","google_ad_section","google_ad_slot","google_ad_type","google_ad_w= idth","google_adtest","google_allow_expandable_ads","google_alternate_ad_= url","google_alternate_color","google_analytics_domain_name","google_anal= ytics_uacct","google_bid","google_city","google_color_bg","google_color_b= order",=0A= "google_color_line","google_color_link","google_color_text","google_color= _url","google_container_id","google_contents","google_country","google_cp= m","google_ctr_threshold","google_cust_age","google_cust_ch","google_cust= _gender","google_cust_id","google_cust_interests","google_cust_job","goog= le_cust_l","google_cust_lh","google_cust_u_url","google_disable_video_aut= oplay","google_ed","google_eids","google_enable_osd","google_encoding","g= oogle_font_face","google_font_size","google_frame_id","google_gl",=0A=

"google_hints","google_image_size","google_kw","google_kw_type","google_l= anguage","google_max_num_ads","google_max_radlink_len","google_num_radlin= ks","google_num_radlinks_per_unit","google_num_slots_to_rotate","google_o= nly_ads_with_video","google_only_pyv_ads","google_only_userchoice_ads","g= oogle_override_format","google_page_url","google_referrer_url","google_re= gion","google_reuse_colors","google_rl_dest_url","google_rl_filtering","g= oogle_rl_mode","google_rt","google_safe","google_skip","google_tag_info",=0A= "google_targeting","google_ui_features","google_ui_version","google_video= _doc_id","google_video_product_type","google_with_pyv_ads"];var = Wa=3Dfunction(a){this.b=3Da;a.google_iframe_oncopy||(a.google_iframe_onco= py=3D{handlers:{},log:[],img:Math.random()<0.1?[]:h});this.d=3Da.google_i= frame_oncopy;a.setTimeout(l(this.k,this),3E4)},Xa;var X=3D"var = i=3Dthis.id,s=3Dwindow.google_iframe_oncopy,H=3Ds&&s.handlers,h=3DH&&H[i]= ,w=3Dthis.contentWindow,d;try{d=3Dw.document}catch(e){}if(h&&d&&(!d.body|= |!d.body.firstChild)){if(h.call){i+=3D'.call';setTimeout(h,0)}else = if(h.match){i+=3D'.nav';w.location.replace(h)}s.log&&s.log.push(i)}";=0A= if(/[&<>\"]/.test(X)){if(X.indexOf("&")!=3D-1)X=3DX.replace(ia,"&amp;");i= f(X.indexOf("<")!=3D-1)X=3DX.replace(ja,"&lt;");if(X.indexOf(">")!=3D-1)X= =3DX.replace(ka,"&gt;");if(X.indexOf('"')!=3D-1)X=3DX.replace(la,"&quot;"= )}Xa=3DX;Wa.prototype.set=3Dfunction(a,b){this.d.handlers[a]=3Db};=0A= Wa.prototype.k=3Dfunction(){if(this.d.img){var = a=3Dthis.d.log,b=3Dthis.b.document;if(a.length){b=3D["http://",ga(),"/pag= ead/gen_204?id=3Diframecopy&log=3D",P(a.join("-")),"&url=3D",P(b.URL.subs= tring(0,512)),"&ref=3D",P(b.referrer.substring(0,512))].join("");a.length= =3D0;a=3Dnew Image;this.d.img.push(a);a.src=3Db}}};var = Ya=3Dfunction(){var a=3D"script";return["<",a,' = src=3D"http://',ha(),"/pagead/js/r20101117/r20110120/show_ads_impl.js",'"= ></',a,">"].join("")},Za=3Dfunction(a,b,c,d){return function(){var = f=3Di;d&&Ma().al(3E4);try{var = e;try{e=3D!!a.document.getElementById(b).contentWindow.document}catch(ta)= {e=3Di}if(e){var s=3Da.document.getElementById(b).contentWindow,=0A= m=3Ds.document;if(!(m.body&&m.body.firstChild)){m.open();s.google_async_i= frame_close=3Dg;m.write(c)}}else{var = z=3Da.document.getElementById(b).contentWindow,q;e=3Dc;e=3DString(e);if(e= .quote)q=3De.quote();else{s=3D['"'];for(m=3D0;m<e.length;m++){var = o=3De.charAt(m),Ga=3Do.charCodeAt(0),ob=3Ds,pb=3Dm+1,ea;if(!(ea=3Dt[o])){= var E;if(Ga>31&&Ga<127)E=3Do;else{var r=3Do;if(r in u)E=3Du[r];else if(r = in t)E=3Du[r]=3Dt[r];else{var = w=3Dr,x=3Dr.charCodeAt(0);if(x>31&&x<127)w=3Dr;else{if(x<256){w=3D"\\x";i= f(x<16||x>256)w+=3D"0"}else{w=3D"\\u";if(x<4096)w+=3D=0A= "0"}w+=3Dx.toString(16).toUpperCase()}E=3Du[r]=3Dw}}ea=3DE}ob[pb]=3Dea}s.= push('"');q=3Ds.join("")}z.location.replace("javascript:"+q)}f=3Dg}catch(= xb){z=3DIa().google_jobrunner;La(z)&&z.rl()}f&&(new = Wa(a)).set(b,Za(a,b,c,i))}},$a=3Dfunction(){return za&&Aa/za||typeof = window.google_hash_ratio=3D=3D"number"&&window.google_hash_ratio||h},ab=3D= function(){var = a=3Dnavigator.userAgent;if(!a.match(/Opera/))if(a.match(/Firefox/))return= "ff";else if(a.match(/Chrome/))return"ch";else if(a.match(/MSIE = 8/))return"ie8";else if(a.match(/MSIE 7/))return a.match(/Trident/)?=0A= "iec":"ie7";return"xx"};window.google_loader_used=3Dg;if(!window.google_l= oader_experiment)if(Ba)window.google_loader_experiment=3Dya(["async","blo= ck"],Ba)||"none";else{var = bb=3Dab();window.google_loader_experiment=3Dya(["async_"+bb,"block_"+bb],= Ca)||"none"}var = cb;if(cb=3Dwindow.google_enable_async=3D=3D=3Dg||!!window.google_loader_e= xperiment.match(/async/))cb=3Dwindow.google_enable_async=3D=3D=3Di?i:(G&&= M(7)||Pa||Oa&&!!window.document.body)&&!window.google_container_id&&(!win= dow.google_ad_output||window.google_ad_output=3D=3D"html");=0A= if(cb){var db=3Dwindow;if(db.google_unique_id)++db.google_unique_id;else = db.google_unique_id=3D1;xa(window);for(var =

Y=3Dwindow,_script$$inline_201=3D"script",eb,Z=3D{allowtransparency:'"tru= e"',frameborder:'"0"',height:'"'+Y.google_ad_height+'"',hspace:'"0"',marg= inwidth:'"0"',marginheight:'"0"',onload:'"'+Xa+'"',scrolling:'"no"',vspac= e:'"0"',width:'"'+Y.google_ad_width+'"'},fb=3DY.document,$=3DZ.id,gb=3D0;= !$||Y.document.getElementById($);)$=3D"aswift_"+gb++;Z.id=3D$;Z.name=3D$;= fb.write(Qa(Z,Y.google_ad_width,Y.google_ad_height));=0A= eb=3D$;for(var hb,ib=3D[],jb=3D0,kb=3DW.length;jb<kb;jb++){var = lb=3DW[jb];if(Y[lb]!=3Dh){var mb;try{var nb=3D[];Ta(new = Ra,Y[lb],nb);mb=3Dnb.join("")}catch(qb){}mb&&va(ib,lb,"=3D",mb,";")}}hb=3D= ib.join("");for(var rb=3D0,sb=3DW.length;rb<sb;rb++)Y[W[rb]]=3Dh;var = tb=3D(new = Date).getTime(),ub=3D$a(),vb=3Dwindow.google_loader_experiment,wb=3D["<!d= octype = html><html><body><",_script$$inline_201,">",hb,"google_show_ads_impl=3Dtr= ue;google_unique_id=3D",Y.google_unique_id,';google_async_iframe_id=3D"',= eb,'";google_start_time=3D',j,";",ub?"google_hash_ratio=3D"+=0A= ub+";":"",vb?'google_loader_experiment=3D"'+vb+'";':"","google_bpp=3D",tb= >j?tb-j:1,";</",_script$$inline_201,">",Ya(),"</body></html>"].join(""),y= b=3DZa(Y,eb,wb,g);Ma().nq(yb,void = 0)}else{window.google_start_time=3Dj;window.google_hash_ratio=3D$a();docu= ment.write(Ya())};})();=0A= ------=_NextPart_000_0022_01CBBDA0.49215790 Content-Type: multipart/alternative; boundary="----=_NextPart_001_003F_01CBBDA0.4922DE30" ------=_NextPart_001_003F_01CBBDA0.4922DE30 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/node/55 =EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML dir=3Dltr xml:lang=3D"en" = xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD=20 profile=3D""><TITLE>Analytic functions by Example | Oracle FAQ</TITLE> <META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type> <META content=3Dtext/css http-equiv=3DContent-Style-Type><LINK = rel=3D"shortcut icon"=20 type=3Dimage/x-icon href=3D"/favicon.ico"><LINK rel=3Dstylesheet = type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/aggregator/aggregator.css?0" = media=3Dall><LINK=20 rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/book/book.css?0" media=3Dall><LINK = rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/node/node.css?0" media=3Dall><LINK = rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/system/defaults.css?0" = media=3Dall><LINK=20 rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/system/system.css?0" = media=3Dall><LINK=20 rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/system/system-menus.css?0" = media=3Dall><LINK=20 rel=3Dstylesheet type=3Dtext/css=20

href=3D"http://www.orafaq.com/modules/user/user.css?0" media=3Dall><LINK = rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/modules/comment/comment.css?0" = media=3Dall><LINK=20 rel=3Dstylesheet type=3Dtext/css=20 href=3D"http://www.orafaq.com/themes/orafaq/style.css?0" media=3Dall> <META name=3DGENERATOR content=3D"MSHTML 8.00.7600.16700"></HEAD> <BODY> <DIV class=3Dhide><A accessKey=3D2 title=3D"Skip navigation."=20 href=3D"http://www.orafaq.com/node/55#content">Skip = navigation</A>.</DIV> <TABLE id=3Dprimary-menu border=3D0 cellSpacing=3D0 cellPadding=3D0 = width=3D"100%"=20 height=3D117> <TBODY> <TR> <TD bgColor=3D#85a1c1 height=3D6></TD></TR> <TR> <TD height=3D111 = background=3Dhttp://www.orafaq.com/forum/banner/backgr.gif> <TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%"> <TBODY> <TR> <TD width=3D236><A href=3D"http://www.orafaq.com/"><IMG=20 src=3D"http://www.orafaq.com/forum/banner/logo.jpg" = width=3D236=20 height=3D111></A> </TD> <TD=20 style=3D"BACKGROUND-IMAGE: url(/forum/banner/back2.jpg); = BACKGROUND-REPEAT: no-repeat; Xbackground-attachment: fixed"=20 vAlign=3Dcenter align=3Dmiddle><IFRAME vspace=3D0 height=3D60 = marginHeight=3D0=20 = src=3D"http://www.orafaq.com/admin/ads/www/delivery/afr.php?n=3Da2142ff6&= amp;zoneid=3D1"=20 frameBorder=3D0 width=3D468 marginWidth=3D0 scrolling=3Dno=20 hspace=3D0>=0A= </IFRAME></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> <TABLE style=3D"MIN-WIDTH: 400px" id=3Dcontent border=3D0 = cellSpacing=3D0 cellPadding=3D5=20 width=3D"100%"> <TBODY> <TR> <TD id=3Dsidebar-left> <DIV id=3Dblock-fudforum-0 class=3D"block block-fudforum"> <DIV class=3Dtitle> <H3>User login</H3></DIV> <DIV class=3Dcontent> <FORM id=3Duser-login-form accept-charset=3DUTF-8 method=3Dpost=20 action=3D/node/55?destination=3Dnode%2F55> <DIV> <DIV id=3Dedit-name-wrapper class=3Dform-item><LABEL = for=3Dedit-name>Login:=20 <SPAN class=3Dform-required title=3D"This field is = required.">*</SPAN></LABEL>=20 <INPUT id=3Dedit-name class=3D"form-text required" maxLength=3D30 = size=3D15=20 type=3Dtext name=3Dname> </DIV> <DIV id=3Dedit-pass-wrapper class=3Dform-item><LABEL =

for=3Dedit-pass>Password:=20 <SPAN class=3Dform-required title=3D"This field is = required.">*</SPAN></LABEL>=20 <INPUT id=3Dedit-pass class=3D"form-text required" maxLength=3D16 = size=3D15=20 type=3Dpassword name=3Dpass> </DIV><INPUT id=3Dedit-submit = class=3Dform-submit value=3DLogin type=3Dsubmit name=3Dop>=20 <BR>[ <A href=3D"http://www.orafaq.com/forum/re/0/">Register</A> ] = [ <A=20 href=3D"http://www.orafaq.com/forum/rst/0/">Forgot password</A> = ]<INPUT=20 id=3Dform-5cf2d512009cf25d77d80b4b4184d360=20 value=3Dform-5cf2d512009cf25d77d80b4b4184d360 type=3Dhidden=20 name=3Dform_build_id> <INPUT id=3Dedit-fudforum-login-form=20 value=3Dfudforum_login_form type=3Dhidden name=3Dform_id>=20 </DIV></FORM></DIV></DIV> <DIV id=3Dblock-orafaq_search-0 class=3D"block = block-orafaq_search"> <DIV class=3Dtitle> <H3>Search</H3></DIV> <DIV class=3Dcontent> <DIV class=3Dsearch-form> <DIV class=3Dcontainer-inline> <FORM id=3Dorafaq-search-form accept-charset=3DUTF-8 method=3Dpost = action=3D/search> <DIV> <DIV id=3Dedit-keys-wrapper class=3Dform-item><INPUT = id=3Dedit-keys=20 class=3Dform-text maxLength=3D255 size=3D12 type=3Dtext = name=3Dkeys> </DIV><INPUT id=3Dedit-submit-1 class=3Dform-submit = value=3DGo type=3Dsubmit name=3Dop>=20 <INPUT id=3Dform-957d77c4d743495c592dc6edf74faa5e=20 value=3Dform-957d77c4d743495c592dc6edf74faa5e type=3Dhidden=20 name=3Dform_build_id> <INPUT id=3Dedit-orafaq-search-form=20 value=3Dorafaq_search_form type=3Dhidden name=3Dform_id>=20 </DIV></FORM></DIV></DIV><FONT size=3D-2><NOBR>[ <A=20 href=3D"http://www.orafaq.com/about/search">Advanced</A> ] [ <A=20 href=3D"http://www.orafaq.com/about/search-help">Help</A>=20 ]</NOBR></FONT></DIV></DIV> <DIV id=3Dblock-menu-menu-site-navigation class=3D"block = block-menu"> <DIV class=3Dtitle> <H3>Site navigation</H3></DIV> <DIV class=3Dcontent> <UL class=3Dmenu> <LI class=3D"collapsed first"><A title=3D""=20 href=3D"http://www.orafaq.com/about">About</A></LI> <LI class=3Dcollapsed><A title=3D"Local blog posts"=20 href=3D"http://www.orafaq.com/articles">Blogs</A></LI> <LI class=3Dcollapsed><A title=3D"Oracle Blog aggregator"=20 href=3D"http://www.orafaq.com/aggregator">Feed = aggregator</A></LI> <LI class=3Dcollapsed><A = href=3D"http://www.orafaq.com/books">Books</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/links">Directories</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/wiki/Events">Events</A></LI> <LI class=3Dleaf><A=20

= href=3D"http://www.orafaq.com/wiki/Category:Frequently_Asked_Questions">F= AQ's</A></LI> <LI class=3Dleaf><A = href=3D"http://www.orafaq.com/forum">Forums</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/wiki/Mailing_lists">Mailing = Lists</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/wiki/Papers">Papers</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/wiki/Scripts">Scripts</A></LI> <LI class=3Dcollapsed><A = href=3D"http://www.orafaq.com/tools">Tools</A></LI> <LI class=3Dleaf><A = href=3D"http://www.orafaq.com/wiki/Usenet">USENET=20 News</A></LI> <LI class=3Dleaf><A=20 href=3D"http://www.orafaq.com/wiki/Main_Page">Wiki</A></LI> <LI class=3D"leaf last"><A=20 href=3D"http://www.orafaq.com/wiki/XML/RSS_Newsfeeds">XML=20 Feeds</A></LI></UL></DIV></DIV> <DIV id=3Dblock-similar-0 class=3D"block block-similar"> <DIV class=3Dtitle> <H3>Similar entries</H3></DIV> <DIV class=3Dcontent> <DIV class=3Ditem-list> <UL> <LI class=3Dfirst><A = href=3D"http://www.orafaq.com/node/2038">hierarchical=20 queries</A></LI> <LI><A=20 = href=3D"http://www.orafaq.com/faq/how_does_one_select_the_top_n_rows_from= _a_table">How=20 does one select the TOP N rows from a table?</A></LI> <LI><A=20 = href=3D"http://www.orafaq.com/faq/how_does_one_select_the_last_n_rows_fro= m_a_table">How=20 does one select the LAST N rows from a table?</A></LI> <LI><A=20 = href=3D"http://www.orafaq.com/faq/how_does_one_code_a_matrix_crosstab_piv= ot_report_in_sql">How=20 does one code a matrix/crosstab/pivot report in SQL?</A></LI> <LI class=3Dlast><A = href=3D"http://www.orafaq.com/node/839">Top-n query=20 tuning in huge OLTP = applications</A></LI></UL></DIV></DIV></DIV></TD> <TD vAlign=3Dtop> <DIV id=3Dmain> <DIV class=3Dbreadcrumb><A = href=3D"http://www.orafaq.com/">Home</A> =C2=BB <A=20 href=3D"http://www.orafaq.com/articles">Blogs</A> =C2=BB <A=20 href=3D"http://www.orafaq.com/blog/shouvik_basu">Shouvik Basu's=20 blog</A></DIV> <H1 class=3Dtitle>Analytic functions by Example</H1><!-- start = main content --> <DIV class=3Dnode><SPAN class=3Dsubmitted>Submitted by Shouvik =

Basu on Mon,=20 2004-11-15 00:00</SPAN> <SPAN class=3Dtaxonomy> <UL class=3D"links inline"> <LI class=3D"taxonomy_term_10 first last"><A=20 title=3D"SQL and PL/SQL Articles"=20 href=3D"http://www.orafaq.com/articles/sql" rel=3Dtag>SQL &amp;=20 PL/SQL</A></LI></UL></SPAN> <DIV class=3Dpicture><IMG title=3D"Shouvik Basu's picture"=20 alt=3D"Shouvik Basu's picture"=20 src=3D"http://www.orafaq.com/files/pictures/picture-9.jpg"></DIV> <DIV class=3Dcontent> <P>This article provides a clear, thorough concept of analytic = functions=20 and its various options by a series of simple yet concept building = examples. The article is intended for SQL coders, who for might be = not be=20 using analytic functions due to unfamiliarity with its cryptic = syntax or=20 uncertainty about its logic of operation. Often I see that people = tend to=20 reinvent the feature provided by analytic functions by native join = and=20 sub-query SQL. This article assumes familiarity with basic Oracle = SQL,=20 sub-query, join and group function from the reader. Based on that=20 familiarity, it builds the concept of analytic functions through a = series=20 of examples.</P> <P>It is true that whatever an analytic function does can be done = by=20 native SQL, with join and sub-queries. But the same routine done = by=20 analytic function is always faster, or at least as fast, when = compared to=20 native SQL. Moreover, I am not considering here the amount of time = that is=20 spent in coding the native SQLs, testing, debugging and tuning = them.</P> <P>The general syntax of analytic function is:</P> <P><SPAN style=3D"FONT-STYLE: italic"><SPAN=20 style=3D"FONT-WEIGHT: bold">Function(arg1,..., argn) OVER ( = [PARTITION BY=20 &lt;...&gt;] [ORDER BY &lt;....&gt;] [&lt;window_clause&gt;]=20 )</SPAN></SPAN></P> <P>&lt;window_clause&gt; is like "ROW &lt;?&gt;" or "RANK = &lt;?&gt;"=20 <BR>All the keywords will be dealt in details as we walk through = the=20 examples. The script for creating the schema (SCOTT) on which the = example=20 queries of this article are run can be obtained in=20 ORACLE_HOME/sqlplus/demo/demobld.sql of any standard Oracle=20 installation.</P> <P> <H3><A=20 = name=3DHow_are_analytic_functions_different_from_group_or_aggregate_funct= ions>How=20 are analytic functions different from group or aggregate=20

functions?</A></H3> <P></P> <P></P><PRE class=3Dbb-code-block>SELECT deptno, COUNT(*) DEPT_COUNT FROM emp WHERE deptno IN (20, 30) GROUP BY deptno; DEPTNO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = DEPT_COUNT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=20 ---------------------- ----------------------=20 20 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; 30 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; 2 rows selected</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-1</DIV></SPAN> <P></P> <P>Consider the <SPAN style=3D"FONT-WEIGHT: bold">Query-1</SPAN> = and its=20 result. <SPAN style=3D"FONT-WEIGHT: bold">Query-1</SPAN> returns = departments=20 and their employee count. Most importantly it groups the records = into=20 departments in accordance with the GROUP BY clause. As such any = non-"group=20 by" column is not allowed in the select clause.</P> <P></P><PRE class=3Dbb-code-block>SELECT empno, deptno,=20 COUNT(*) OVER (PARTITION BY=20 deptno) DEPT_COUNT FROM emp WHERE deptno IN (20, 30); EMPNO DEPTNO DEPT_COUNT ---------- ---------- ---------7369 20 5 7566 20 5 7788 20 5 7902 20 5 7876 20 5 7499 30 6 7900 30 6 7844 30 6 7698 30 6 7654 30 6 7521 30 6 11 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-2</DIV></SPAN> <P></P> <P>Now consider the analytic function query (<SPAN=20 style=3D"FONT-WEIGHT: bold">Query-2</SPAN>) and its result. Note = the=20 repeating values of DEPT_COUNT column.</P> <P>This brings out the main difference between aggregate and = analytic=20 functions. Though analytic functions give aggregate result they do =

not=20 group the result set. They return the group value multiple times = with each=20 record. As such any other non-"group by" column or expression can = be=20 present in the select clause, for example, the column EMPNO in = <SPAN=20 style=3D"FONT-WEIGHT: bold">Query-2</SPAN>.</P> <P>Analytic functions are computed after all joins, WHERE clause, = GROUP BY=20 and HAVING are computed on the query. The main ORDER BY clause of = the=20 query operates after the analytic functions. So analytic functions = can=20 only appear in the select list and in the main ORDER BY clause of = the=20 query.</P> <P>In absence of any PARTITION or &lt;window_clause&gt; inside the = OVER( )=20 portion, the function acts on entire record set returned by the = where=20 clause. Note the results of <SPAN style=3D"FONT-WEIGHT: = bold">Query-3</SPAN>=20 and compare it with the result of aggregate function query <SPAN=20 style=3D"FONT-WEIGHT: bold">Query-4</SPAN>. </P> <P></P><PRE class=3Dbb-code-block>SELECT empno, deptno,=20 COUNT(*) OVER ( ) CNT FROM emp WHERE deptno IN (10, 20) ORDER BY 2, 1; EMPNO DEPTNO CNT ---------- ---------- ---------7782 10 8 7839 10 8 7934 10 8 7369 20 8 7566 20 8 7788 20 8 7876 20 8 7902 20 8</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-3</DIV></SPAN> <P></P> <P></P><PRE class=3Dbb-code-block>SELECT COUNT(*) FROM emp WHERE deptno IN (10, 20); COUNT(*) ---------8</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-4</DIV></SPAN> <P></P> <P> <H3><A = name=3DHow_to_break_the_result_set_in_groups_or_partitions>How to=20 break the result set in groups or partitions?</A></H3> <P></P> <P>It might be obvious from the previous example that the clause = PARTITION=20 BY is used to break the result set into groups. PARTITION BY can = take any=20

non-analytic SQL expression.</P> <P>Some functions support the &lt;window_clause&gt; inside the = partition=20 to further limit the records they act on. In the absence of any=20 &lt;window_clause&gt; analytic functions are computed on all the = records=20 of the partition clause.</P> <P>The functions SUM, COUNT, AVG, MIN, MAX are the common analytic = functions the result of which does not depend on the order of the=20 records.</P> <P>Functions like LEAD, LAG, RANK, DENSE_RANK, ROW_NUMBER, FIRST, = FIRST=20 VALUE, LAST, LAST VALUE depends on order of records. In the next = example=20 we will see how to specify that.</P> <P> <H3><A = name=3DHow_to_specify_the_order_of_the_records_in_the_partition>How=20 to specify the order of the records in the partition?</A></H3> <P></P> <P>The answer is simple, by the "ORDER BY" clause inside the OVER( = )=20 clause. This is different from the ORDER BY clause of the main = query which=20 comes after WHERE. In this section we go ahead and introduce each = of the=20 very useful functions LEAD, LAG, RANK, DENSE_RANK, ROW_NUMBER, = FIRST,=20 FIRST VALUE, LAST, LAST VALUE and show how each depend on the = order of the=20 record.</P> <P>The general syntax of specifying the ORDER BY clause in = analytic=20 function is:</P> <P><SPAN style=3D"FONT-STYLE: italic"><SPAN style=3D"FONT-WEIGHT: = bold">ORDER=20 BY &lt;sql_expr&gt; [ASC or DESC] NULLS [FIRST or = LAST]</SPAN></SPAN></P> <P>The syntax is self-explanatory.</P> <P> <H3><A name=3DROW_NUMBER_RANK_and_DENSE_RANK>ROW_NUMBER, RANK and=20 DENSE_RANK</A></H3> <P></P> <P>All the above three functions assign integer values to the rows = depending on their order. That is the reason of clubbing them=20 together.</P> <P><SPAN style=3D"FONT-WEIGHT: bold">ROW_NUMBER( )</SPAN> gives a = running=20 serial number to a partition of records. It is very useful in = reporting,=20 especially in places where different partitions have their own = serial=20 numbers. In <SPAN style=3D"FONT-WEIGHT: bold">Query-5</SPAN>, the = function=20 ROW_NUMBER( ) is used to give separate sets of running serial to = employees=20 of departments 10 and 20 based on their HIREDATE.</P> <P></P><PRE class=3Dbb-code-block>SELECT empno, deptno, hiredate,

ROW_NUMBER( ) OVER (PARTITION BY deptno ORDER BY hiredate NULLS LAST) SRLNO FROM emp WHERE deptno IN (10, 20) ORDER BY deptno, SRLNO; EMPNO DEPTNO HIREDATE SRLNO ------ ------- --------- ---------7782 10 09-JUN-81 1 7839 10 17-NOV-81 2 7934 10 23-JAN-82 3 7369 20 17-DEC-80 1 7566 20 02-APR-81 2 7902 20 03-DEC-81 3 7788 20 09-DEC-82 4 7876 20 12-JAN-83 5 8 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-5 (ROW_NUMBER = example)</DIV></SPAN> <P></P> <P>RANK and DENSE_RANK both provide rank to the records based on = some=20 column value or expression. In case of a tie of 2 records at = position N,=20 RANK declares 2 positions N and skips position N+1 and gives = position N+2=20 to the next record. While DENSE_RANK declares 2 positions N but = does not=20 skip position N+1.</P> <P><SPAN style=3D"FONT-WEIGHT: bold">Query-6</SPAN> shows the = usage of both=20 RANK and DENSE_RANK. For DEPTNO 20 there are two contenders for = the first=20 position (EMPNO 7788 and 7902). Both RANK and DENSE_RANK declares = them as=20 joint toppers. RANK skips the next value that is 2 and next = employee EMPNO=20 7566 is given the position 3. For DENSE_RANK there are no such = gaps.</P> <P></P><PRE class=3Dbb-code-block>SELECT empno, deptno, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST) RANK, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST) DENSE_RANK FROM emp WHERE deptno IN (10, 20) ORDER BY 2, RANK; EMPNO DEPTNO SAL RANK DENSE_RANK ------ ------- ----- ----- ---------7839 10 5000 1 1 7782 10 2450 2 2 7934 10 1300 3 3 7788 20 3000 1 1 7902 20 3000 1 1 7566 20 2975 3 2 7876 20 1100 4 3

7369

20

800

8 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-6 (RANK and DENSE_RANK=20 example)</DIV></SPAN> <P></P> <P> <H3><A name=3DLEAD_and_LAG>LEAD and LAG</A></H3> <P></P> <P>LEAD has the ability to compute an expression on the next rows = (rows=20 which are going to come after the current row) and return the = value to the=20 current row. The general syntax of LEAD is shown below:</P> <P><SPAN style=3D"FONT-STYLE: italic"><SPAN style=3D"FONT-WEIGHT: = bold">LEAD=20 (&lt;sql_expr&gt;, &lt;offset&gt;, &lt;default&gt;) OVER=20 (&lt;analytic_clause&gt;)</SPAN></SPAN></P> <P>&lt;sql_expr&gt; is the expression to compute from the leading=20 row.<BR>&lt;offset&gt; is the index of the leading row relative to = the=20 current row.<BR>&lt;offset&gt; is a positive integer with default=20 1.<BR>&lt;default&gt; is the value to return if the &lt;offset&gt; = points=20 to a row outside the partition range.</P> <P>The syntax of LAG is similar except that the offset for LAG = goes into=20 the previous rows.<BR><SPAN style=3D"FONT-WEIGHT: = bold">Query-7</SPAN> and=20 its result show simple usage of LAG and LEAD function.</P> <P></P><PRE class=3Dbb-code-block>SELECT deptno, empno, sal, LEAD(sal, 1, 0) OVER (PARTITION BY dept ORDER BY sal DESC NULLS LAST) = NEXT_LOWER_SAL, LAG(sal, 1, 0) OVER (PARTITION BY dept ORDER BY sal DESC NULLS LAST) = PREV_HIGHER_SAL FROM emp WHERE deptno IN (10, 20) ORDER BY deptno, sal DESC; DEPTNO EMPNO SAL NEXT_LOWER_SAL PREV_HIGHER_SAL ------- ------ ----- -------------- --------------10 7839 5000 2450 0 10 7782 2450 1300 5000 10 7934 1300 0 2450 20 7788 3000 3000 0 20 7902 3000 2975 3000 20 7566 2975 1100 3000 20 7876 1100 800 2975 20 7369 800 0 1100 8 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-7 (LEAD and = LAG)</DIV></SPAN> <P></P> <P> <H3><A name=3DFIRST_VALUE_and_LAST_VALUE_function>FIRST VALUE and = LAST VALUE=20 function</A></H3> <P></P> <P>The general syntax is:</P>

<P><SPAN style=3D"FONT-STYLE: italic"><SPAN=20 style=3D"FONT-WEIGHT: bold">FIRST_VALUE(&lt;sql_expr&gt;) OVER=20 (&lt;analytic_clause&gt;)</SPAN></SPAN></P> <P>The FIRST_VALUE analytic function picks the first record from = the=20 partition after doing the ORDER BY. The &lt;sql_expr&gt; is = computed on=20 the columns of this first record and results are returned. The = LAST_VALUE=20 function is used in similar context except that it acts on the = last record=20 of the partition.</P> <P></P><PRE class=3Dbb-code-block>-- How many days after the first = hire of each department were the next -- employees hired? SELECT empno, deptno, hiredate ? FIRST_VALUE(hiredate) OVER (PARTITION BY deptno ORDER BY hiredate) DAY_GAP FROM emp WHERE deptno IN (20, 30) ORDER BY deptno, DAY_GAP; EMPNO DEPTNO DAY_GAP ---------- ---------- ---------7369 20 0 7566 20 106 7902 20 351 7788 20 722 7876 20 756 7499 30 0 7521 30 2 7698 30 70 7844 30 200 7654 30 220 7900 30 286 11 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-8 = (FIRST_VALUE)</DIV></SPAN> <P></P> <P> <H3><A name=3DFIRST_and_LAST_function>FIRST and LAST = function</A></H3> <P></P> <P>The FIRST function (or more properly KEEP FIRST function) is = used in a=20 very special situation. Suppose we rank a group of record and = found=20 several records in the first rank. Now we want to apply an = aggregate=20 function on the records of the first rank. KEEP FIRST enables = that.</P> <P>The general syntax is:</P> <P><SPAN style=3D"FONT-STYLE: italic"><SPAN=20 style=3D"FONT-WEIGHT: bold">Function( ) KEEP (DENSE_RANK FIRST = ORDER BY=20 &lt;expr&gt;) OVER (&lt;partitioning_clause&gt;)</SPAN></SPAN></P> <P>Please note that FIRST and LAST are the only functions that = deviate=20 from the general syntax of analytic functions. They do not have =

the ORDER=20 BY inside the OVER clause. Neither do they support any = &lt;window&gt;=20 clause. The ranking done in FIRST and LAST is always DENSE_RANK. = The query=20 below shows the usage of FIRST function. The LAST function is used = in=20 similar context to perform computations on last ranked = records.</P> <P></P><PRE class=3Dbb-code-block>-- How each employee's salary = compare with the average salary of the first -- year hires of their department? SELECT empno, deptno, TO_CHAR(hiredate,'YYYY') HIRE_YR, sal, TRUNC( AVG(sal) KEEP (DENSE_RANK FIRST ORDER BY TO_CHAR(hiredate,'YYYY') ) OVER (PARTITION BY deptno) ) AVG_SAL_YR1_HIRE FROM emp WHERE deptno IN (20, 10) ORDER BY deptno, empno, HIRE_YR; EMPNO DEPTNO HIRE SAL AVG_SAL_YR1_HIRE ---------- ---------- ---- ---------- ---------------7782 10 1981 2450 3725 7839 10 1981 5000 3725 7934 10 1982 1300 3725 7369 20 1980 800 800 7566 20 1981 2975 800 7788 20 1982 3000 800 7876 20 1983 1100 800 7902 20 1981 3000 800 8 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-9 (KEEP = FIRST)</DIV></SPAN> <P></P> <P> <H3><A=20 = name=3DHow_to_specify_the_Window_clause_ROW_type_or_RANGE_type_windows>Ho= w=20 to specify the Window clause (ROW type or RANGE type = windows)?</A></H3> <P></P> <P>Some analytic functions (AVG, COUNT, FIRST_VALUE, LAST_VALUE, = MAX, MIN=20 and SUM among the ones we discussed) can take a window clause to = further=20 sub-partition the result and apply the analytic function. An = important=20 feature of the windowing clause is that it is dynamic in = nature.</P> <P>The general syntax of the &lt;window_clause&gt; is<BR><BR><SPAN = style=3D"FONT-STYLE: italic"><SPAN style=3D"FONT-WEIGHT: = bold">[ROW or RANGE]=20 BETWEEN &lt;start_expr&gt; AND &lt;end_expr&gt;</SPAN></SPAN></P> <P>&lt;start_expr&gt; can be any one of the following <BR>

<OL> <LI>UNBOUNDED PECEDING<BR> <LI>CURRENT ROW <BR> <LI>&lt;<SPAN style=3D"FONT-WEIGHT: bold">sql_expr</SPAN>&gt; = PRECEDING or=20 FOLLOWING.</LI></OL> <P></P> <OL>&lt;end_expr&gt; can be any one of the following=20 <LI>UNBOUNDED FOLLOWING or=20 <LI>CURRENT ROW or=20 <LI>&lt;<SPAN style=3D"FONT-WEIGHT: bold">sql_expr</SPAN>&gt; = PRECEDING or=20 FOLLOWING.</LI></OL> <P>For ROW type windows the definition is in terms of row numbers = before=20 or after the current row. So for ROW type windows <SPAN=20 style=3D"FONT-WEIGHT: bold">&lt;sql_expr&gt;</SPAN> must evaluate = to a=20 positive integer.</P> <P>For RANGE type windows the definition is in terms of values = before or=20 after the current ORDER. We will take this up in details = latter.</P> <P>The ROW or RANGE window cannot appear together in one OVER = clause. The=20 window clause is defined in terms of the current row. But may or = may not=20 include the current row. The start point of the window and the end = point=20 of the window can finish before the current row or after the = current row.=20 Only start point cannot come after the end point of the window. In = case=20 any point of the window is undefined the default is UNBOUNDED = PRECEDING=20 for &lt;start_expr&gt; and UNBOUNDED FOLLOWING for = &lt;end_expr&gt;.</P> <P>If the end point is the current row, syntax only in terms of = the start=20 point can be can be<BR><SPAN style=3D"FONT-WEIGHT: bold">[ROW or = RANGE]=20 [&lt;start_expr&gt; PRECEDING or UNBOUNDED PRECEDING ]</SPAN></P> <P>[ROW or RANGE] CURRENT ROW is also allowed but this is = redundant. In=20 this case the function behaves as a single-row function and acts = only on=20 the current row.</P> <P> <H3><A name=3DROW_Type_Windows>ROW Type Windows</A></H3> <P></P> <P>For analytic functions with ROW type windows, the general = syntax=20 is:</P> <P><SPAN style=3D"FONT-WEIGHT: bold">Function( ) OVER (PARTITIN BY = &lt;expr1&gt; ORDER BY &lt;expr2,..&gt; ROWS BETWEEN = &lt;start_expr&gt;=20 AND &lt;end_expr&gt;)</SPAN><BR>or <BR><SPAN=20 style=3D"FONT-WEIGHT: bold">Function( ) OVER (PARTITON BY = &lt;expr1&gt;=20

ORDER BY &lt;expr2,..&gt; ROWS [&lt;start_expr&gt; PRECEDING or = UNBOUNDED=20 PRECEDING]</SPAN></P> <P>For ROW type windows the windowing clause is in terms of record = numbers.</P> <P>The query <SPAN style=3D"FONT-WEIGHT: bold">Query-10</SPAN> has = no=20 apparent real life description (<SPAN style=3D"FONT-STYLE: = italic">except=20 column FROM_PU_C</SPAN>) but the various windowing clause are = illustrated=20 by a COUNT(*) function. The count simply shows the number of rows = inside=20 the window definition. Note the build up of the count for each = column for=20 the YEAR 1981.</P> <P>The column FROM_P3_TO_F1 shows an example where start point of = the=20 window is before the current row and end point of the window is = after=20 current row. This is a 5 row window; it shows values less than 5 = during=20 the beginning and end.</P> <P></P><PRE class=3Dbb-code-block>-- The query below has no = apparent real life description (except=20 -- column FROM_PU_C) but is remarkable in illustrating the various = windowing -- clause by a COUNT(*) function. =20 SELECT empno, deptno, TO_CHAR(hiredate, 'YYYY') YEAR, COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY') ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) = FROM_P3_TO_F1, COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY') ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) = FROM_PU_TO_C, COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY') ORDER BY hiredate ROWS <SPAN style=3D"FONT-WEIGHT: bold">BETWEEN 3 = PRECEDING AND 1 PRECEDING</SPAN>) FROM_P2_TO_P1, COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY') ORDER BY hiredate ROWS <SPAN style=3D"FONT-WEIGHT: bold">BETWEEN 1 = FOLLOWING AND 3 FOLLOWING</SPAN>) FROM_F1_TO_F3 FROM emp ORDEDR BY hiredate EMPNO DEPTNO YEAR FROM_P3_TO_F1 FROM_PU_TO_C FROM_P2_TO_P1 = FROM_F1_TO_F3 ------ ------- ---- ------------- ------------ ------------- = ------------7369 20 1980 1 1 0 0 &lt;font bgcolor=3Dyellow&gt;7499 30 1981 2 1 0 3 7521 30 1981 3 2 1 3 7566 20 1981 4 3 2 3 7698 30 1981 5 4 3 3

= = = = =

7782 3 7844 3 7654 3 7839 2 7900 1

10 1981 30 1981 30 1981 10 1981 30 1981 1981 1982 1982 1983

5 5 5 5 5 4 2 2 1

5 6 7 8 9 10 1 2 1

3 3 3 3 3 3 0 1 0

= = = = = = = = =

7902 20 0&lt;/font&gt; 7934 10 1 7788 20 0 7876 20 0

14 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-10 (ROW type windowing=20 example)</DIV></SPAN> <P></P> <P>The column FROM_PU_TO_CURR shows an example where start point = of the=20 window is before the current row and end point of the window is = the=20 current row. This column only has some real world significance. It = can be=20 thought of as the yearly employee build-up of the organization as = each=20 employee is getting hired.</P> <P>The column FROM_P2_TO_P1 shows an example where start point of = the=20 window is before the current row and end point of the window is = before the=20 current row. This is a 3 row window and the count remains constant = after=20 it has got 3 previous rows.</P> <P>The column FROM_F1_TO_F3 shows an example where start point of = the=20 window is after the current row and end point of the window is = after the=20 current row. This is a reverse of the previous column. Note how = the count=20 declines during the end.</P> <P> <H3><A name=3DRANGE_Windows>RANGE Windows</A></H3> <P></P> <P>For RANGE windows the general syntax is same as that of = ROW:</P> <P><SPAN style=3D"FONT-STYLE: italic"><SPAN=20 style=3D"FONT-WEIGHT: bold">Function( ) OVER (PARTITION BY = &lt;expr1&gt;=20 ORDER BY &lt;expr2&gt; RANGE BETWEEN &lt;start_expr&gt; AND=20 &lt;end_expr&gt;)<BR>or <BR>Function( ) OVER (PARTITION BY = &lt;expr1&gt;=20 ORDER BY &lt;expr2&gt; RANGE [&lt;start_expr&gt; PRECEDING or = UNBOUNDED=20 PRECEDING]</SPAN></SPAN></P>

<P>For &lt;start_expr&gt; or &lt;end_expr&gt; we can use UNBOUNDED = PECEDING, CURRENT ROW or <SPAN=20 style=3D"FONT-WEIGHT: bold">&lt;sql_expr&gt;</SPAN> PRECEDING or = FOLLOWING.=20 However for RANGE type windows &lt;sql_expr&gt; must evaluate to = value=20 compatible with ORDER BY expression &lt;expr1&gt;.</P> <P><SPAN style=3D"FONT-WEIGHT: bold">&lt;sql_expr&gt;</SPAN> is a = logical=20 offset. It must be a constant or expression that evaluates to a = positive=20 numeric value or an interval literal. Only one ORDER BY expression = is=20 allowed.</P> <P>If <SPAN style=3D"FONT-WEIGHT: bold">&lt;sql_expr&gt;</SPAN> = evaluates to=20 a numeric value, then the ORDER BY expr must be a NUMBER or DATE = datatype.=20 If &lt;sql_expr&gt; evaluates to an interval value, then the ORDER = BY expr=20 must be a DATE datatype.</P> <P>Note the example (<SPAN style=3D"FONT-WEIGHT: = bold">Query-11</SPAN>)=20 below which uses RANGE windowing. The important thing here is that = the=20 size of the window in terms of the number of records can vary.</P> <P></P><PRE class=3Dbb-code-block>-- For each employee give the = count of employees getting half more that their=20 -- salary and also the count of employees in the departments 20 and 30 = getting half=20 -- less than their salary. =20 SELECT deptno, empno, sal, Count(*) OVER (PARTITION BY deptno ORDER BY sal RANGE BETWEEN UNBOUNDED PRECEDING AND (sal/2) PRECEDING) CNT_LT_HALF, COUNT(*) OVER (PARTITION BY deptno ORDER BY sal RANGE BETWEEN (sal/2) FOLLOWING AND UNBOUNDED FOLLOWING) CNT_MT_HALF FROM emp WHERE deptno IN (20, 30) ORDER BY deptno, sal DEPTNO EMPNO SAL CNT_LT_HALF CNT_MT_HALF ------- ------ ----- ----------- ----------20 7369 800 0 3 20 7876 1100 0 3 20 7566 2975 2 0 20 7788 3000 2 0 20 7902 3000 2 0 30 7900 950 0 3 30 7521 1250 0 1 30 7654 1250 0 1 30 7844 1500 0 1 30 7499 1600 0 1 30 7698 2850 3 0 11 rows selected.</PRE><SPAN style=3D"FONT-WEIGHT: bold"> <DIV style=3D"TEXT-ALIGN: center">Query-11 (RANGE type windowing=20 example)</DIV></SPAN> <P></P>

<P> <H3><A name=3DOrder_of_computation_and_performance_tips>Order of = computation=20 and performance tips</A></H3> <P></P> <P>Defining the PARTITOIN BY and ORDER BY clauses on indexed = columns=20 (ordered in accordance with the PARTITION CLAUSE and then the = ORDER BY=20 clause in analytic function) will provide optimum performance. For = <SPAN=20 style=3D"FONT-WEIGHT: bold">Query-5</SPAN>, for example, a = composite index=20 on (deptno, hiredate) columns will prove effective.</P> <P>It is advisable to always use CBO for queries using analytic = functions.=20 The tables and indexes should be analyzed and optimizer mode = should be=20 CHOOSE.</P> <P>Even in absence of indexes analytic functions provide = acceptable=20 performance but need to do sorting for computing partition and = order by=20 clause. If the query contains multiple analytic functions, sorting = and=20 partitioning on two different columns should be avoided if they = are both=20 not indexed.</P> <P> <H3><A name=3DConclusion>Conclusion</A></H3> <P></P> <P>The aim of this article is not to make the reader try analytic=20 functions forcibly in every other complex SQL. It is meant for a = SQL=20 coder, who has been avoiding analytic functions till now, even in = complex=20 analytic queries and reinventing the same feature much = painstakingly by=20 native SQL and join query. Its job is done if such a person finds = analytic=20 functions clear, understandable and usable after going through the = article, and starts using them.<BR></P></DIV> <DIV class=3Dlinks>=C2=BB=20 <UL class=3D"links inline"> <LI class=3D"blog_usernames_blog first"><A=20 title=3D"Read Shouvik Basu's latest blog entries."=20 href=3D"http://www.orafaq.com/blog/shouvik_basu">Shouvik Basu's=20 blog</A></LI> <LI class=3D"comment_forbidden last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV></DIV> <DIV id=3Dcomments><A id=3Dcomment-167></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-167"></A></H3> <DIV class=3Dsubmitted>Submitted by Stephen (not verified) on Fri, =

2005-08-26 06:14.</DIV> <DIV class=3Dcontent> <P>Most of the examples that I have come across deal with simple = dates.=20 What about when you have a data set that contains records with = timestamps=20 and you would like to roll them up to the second and then look at = a=20 sliding window to find, say the busiest 5 minutes of the day? It = is=20 trivial to create the query to aggregate the data into per-second = blocks=20 but I cannot figure out the syntax to put a window around it.</P> <P>Thanks.</P> <P></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links --></DIV> <DIV class=3Dindented><A id=3Dcomment-5014></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-5014">useful = topic</A></H3> <DIV class=3Dsubmitted>Submitted by abuleen on Mon, 2009-01-12 = 04:28.</DIV> <DIV class=3Dcontent> <P>This is very useful topic,<BR>But I have simple problem I can = not=20 solve,<BR>I want the id(or any column) of the row before the = current row?=20 <BR></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6314></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6314">dynamic window = range</A></H3> <DIV class=3Dsubmitted>Submitted by Veslar on Thu, 2010-09-16 = 01:58.</DIV> <DIV class=3Dcontent> <P>Hi Stephen,</P> <P>try this &gt; &gt; &gt; </P> <P>create table trt (timepoint timestamp,random_str = varchar2(7));</P> <P>insert into trt values(to_timestamp('16.09.2010=20 07:05:51:781000','DD.MM.YYYY HH24:MI:SS:FF6'),'piNX');<BR>insert = into trt=20 values(to_timestamp('16.09.2010 07:09:11:453000','DD.MM.YYYY=20

HH24:MI:SS:FF6'),'EKzU');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:16:515000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'rnZg');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:18:890000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'LFEy');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:24:187000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'BNZf');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:26:937000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'FXFD');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:29:140000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'Esgz');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:30:921000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'wolR');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:32:218000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'AijN');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:33:500000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'PUot');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:34:625000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'nIUX');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:35:796000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'DGTf');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:36:750000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'eEYe');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:37:828000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'mHYt');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:38:859000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'buWA');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:39:968000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'yllr');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:45:359000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'WJua');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:48:328000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'Zsrp');<BR>insert into trt=20 values(to_timestamp('16.09.2010 07:09:50:656000','DD.MM.YYYY=20 HH24:MI:SS:FF6'),'WtDJ');<BR>commit;</P> <P>SELECT TO_CHAR(timepoint,'DD.MM.YYYY HH24:MI:SS.FF3')=20 "Start_bussiest_5sec_interval"<BR>FROM<BR>&nbsp;&nbsp;(SELECT=20 timepoint,<BR>&nbsp;&nbsp;&nbsp;&nbsp;DENSE_RANK() over (order by=20 forw_dens_per_5sec DESC,end_time_5sec-timepoint,timepoint)=20 rank<BR>&nbsp;&nbsp;FROM<BR>&nbsp;&nbsp;&nbsp;&nbsp;(SELECT=20 timepoint,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT(*) over = (order by=20 timepoint range BETWEEN CURRENT row AND interval '5' second = following )=20 = forw_dens_per_5sec,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(timepoint)= =20 over (order by timepoint range BETWEEN CURRENT row AND interval = '5' second=20 following ) end_time_5sec<BR>&nbsp;&nbsp;&nbsp;&nbsp;FROM=20 trt<BR>&nbsp;&nbsp;&nbsp;&nbsp;)<BR>&nbsp;&nbsp;)<BR>WHERE = rank=3D1;</P> <P>Regards</P> <P>Veslar</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20

to post comments</SPAN></LI></UL></DIV><!-- END: links --></DIV> <DIV class=3Dindented><A id=3Dcomment-6384></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 = href=3D"http://www.orafaq.com/node/55#comment-6384">Correction</A></H3> <DIV class=3Dsubmitted>Submitted by pakkiaraj on Thu, 2010-12-30=20 03:19.</DIV> <DIV class=3Dcontent> <P>The output of your query is:=20 Start_bussiest_5sec_interval=3D<BR>16.09.2010 07:09:35.796. But I = guess this=20 is not the starting of the busiest 5 sec interval. I guess it = should be =3D=20 16.09.2010 07:09:30.921. If I am correct than your query should be = modifed=20 here: </P> <P>DENSE_RANK() over (order by forw_dens_per_5sec=20 DESC,end_time_5sec-timepoint DESC,timepoint) rank.</P> <P>Regards.<BR>Pakkia<BR></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post=20 comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV></DIV></DIV><A=20 id=3Dcomment-168></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-168"></A></H3> <DIV class=3Dsubmitted>Submitted by Sateesh (not verified) on Mon, = 2005-08-22 13:40.</DIV> <DIV class=3Dcontent> <P>When I was stuck with the oracle documentation reading about = analytic=20 functions, being described highly formally, I got = this<BR>excellent=20 article describing complex things in really simple terms with=20 examples.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-169></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-169"></A></H3> <DIV class=3Dsubmitted>Submitted by Dwarak (not verified) on Thu, = 2005-02-03=20 18:32.</DIV> <DIV class=3Dcontent> <P>Hey, why don't u write a book on this. <BR>This article is =

really=20 cool.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-170></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-170"></A></H3> <DIV class=3Dsubmitted>Submitted by Russell (not verified) on Thu, = 2005-04-14 17:34.</DIV> <DIV class=3Dcontent> <P>I was stuck with some Oracle Analytical function and was = looking for=20 some help. Bumped across this article.</P> <P>Really neat! Keep up the good work.</P></DIV><!-- BEGIN: links = --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-171></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-171"></A></H3> <DIV class=3Dsubmitted>Submitted by bill gfroehrer (not verified) = on Tue,=20 2005-06-14 07:20.</DIV> <DIV class=3Dcontent> <P>Hi Shouvik,</P> <P>I was dusting off my OLAP stuff (been a while) seeking a = solution to a=20 data loading issue. Your article "Analytic functions by Example" = helped me=20 zero in on the solution.</P> <P>Gratitude and a "Thousand At-A-Boys" to you. <GRIN></P> <P>Keep up the good work!</P> <P>BG...</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-172></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-172"></A></H3>

<DIV class=3Dsubmitted>Submitted by Luke Curran (not verified) on = Wed,=20 2005-06-08 08:11.</DIV> <DIV class=3Dcontent> <P>Excellent article. I personally learn best with simple examples = to=20 demonstrate potentially complex concepts ... and this article was = perfect.=20 Thanks.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-174></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-174"></A></H3> <DIV class=3Dsubmitted>Submitted by usha (not verified) on Sun, = 2005-07-10=20 21:46.</DIV> <DIV class=3Dcontent> <P>Thanx a lot!! This doc really helped me a lot.<BR>One can get a = clear=20 idea regarding analytical functions if he/she go thru this page=20 once..<BR>Usha</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-175></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-175"></A></H3> <DIV class=3Dsubmitted>Submitted by Manoj Pathak (not verified) on = Wed,=20 2005-04-27 14:44.</DIV> <DIV class=3Dcontent> <P>Excellent!! it is a great privilege to work with = you.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-176></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-176"></A></H3> <DIV class=3Dsubmitted>Submitted by Vadi (not verified) on Fri, =

2005-05-06=20 11:50.</DIV> <DIV class=3Dcontent> <P>-- How many days after the first hire of each department were = the next=20 employees hired?<BR>SELECT empno, deptno, hiredate ?=20 FIRST_VALUE(hiredate)<BR>OVER (PARTITION BY deptno ORDER BY = hiredate)=20 DAY_GAP<BR>FROM emp<BR>WHERE deptno IN (20, 30)<BR>ORDER BY = deptno,=20 DAY_GAP;</P> <P>I think there is an error in this query. It does not return the = same=20 results as shown in the example.<BR>Thanks in = advance</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links --></DIV> <DIV class=3Dindented><A id=3Dcomment-1908></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 = href=3D"http://www.orafaq.com/node/55#comment-1908">correction</A></H3> <DIV class=3Dsubmitted>Submitted by santoshshinde (not verified) = on Fri,=20 2006-09-22 09:54.</DIV> <DIV class=3Dcontent> <P> <DIV class=3Dbb-quote>Quote: <BLOCKQUOTE class=3Dbb-quote-body>A great article with everything = put=20 together about getting started with analytical=20 functions.</BLOCKQUOTE></DIV> <P></P> <P>Regarding correction:</P> <P>Replace the '?' with '-'. I think that will give the difference = in=20 dates to calculate the days.</P> <P></P><PRE class=3Dbb-code-block>SELECT empno, deptno, hiredate - = FIRST_VALUE(hiredate) OVER (PARTITION BY deptno ORDER BY hiredate) DAY_GAP FROM emp WHERE deptno IN (20, 30) ORDER BY deptno, DAY_GAP;</PRE> <P></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV></DIV><A=20 id=3Dcomment-178></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20

href=3D"http://www.orafaq.com/node/55#comment-178"></A></H3> <DIV class=3Dsubmitted>Submitted by Ivor Oorloff (not verified) on = Fri,=20 2005-04-29 04:33.</DIV> <DIV class=3Dcontent> <P>I was trying to use the dense_rank function to tune a query but = really=20 couldn't understand the Oracle doco - your page helped me make the = breakthrough and my query runs instantly now whereas it took an = hour=20 before.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-315></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-315">This is an=20 excellent</A></H3> <DIV class=3Dsubmitted>Submitted by Karen Sullivan (not verified) = on Tue,=20 2005-10-25 09:23.</DIV> <DIV class=3Dcontent> <P>This is an excellent treatment of analytic functions. Other = analytic=20 function articles just didn't cut it for me. After reading this, = was able=20 to quickly solve an SQL problem. </P> <P>I've added your URL to our Business Unit's Web Site.</P> <P>Thank you.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-1078></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-1078">Really=20 Enthralling</A></H3> <DIV class=3Dsubmitted>Submitted by Arindam Mukherjee (not = verified) on Tue,=20 2006-03-21 04:12.</DIV> <DIV class=3Dcontent> <P>Hello,</P> <P>What a presentation you have had in this web page. I appreciate = your=20 intuition and noble efforts. Looking forward to seeing your = article on how=20 to write well-tuned SQL.<BR>May GOD bless you!!</P> <P>Regards,<BR>Arindam Mukherjee</P></DIV><!-- BEGIN: links -->

<DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-2152></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-2152">Analytic = Functions -=20 Awesome article</A></H3> <DIV class=3Dsubmitted>Submitted by Prakash Rai (not verified) on = Sat,=20 2006-10-07 22:26.</DIV> <DIV class=3Dcontent> <P>Shouvik -</P> <P>Like many other readers I am your real fan. </P> <P>I have been looking to explore the analytic functions and this = article=20 with examples is just a great startup. I won't amaze to Google = your name=20 to find something rare gems about Oracle.</P> <P>Keep up the great work!</P> <P>Regards,<BR>Prakash<BR></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-2796></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-2796">Analytic = Functions -=20 Great</A></H3> <DIV class=3Dsubmitted>Submitted by B Adhvaryu (not verified) on = Fri,=20 2006-11-24 11:56.</DIV> <DIV class=3Dcontent> <P>Shouvik,</P> <P>This is one of the best article I have ever found to start up = with=20 Analytic Function.</P> <P>I would say just keep it up and forward the same related = articles.</P> <P>Regards,<BR>Ba</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20

id=3Dcomment-3288></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-3288">Very Great = Effort - Add=20 more here with time</A></H3> <DIV class=3Dsubmitted>Submitted by Aasif (not verified) on Fri, = 2006-12-15=20 00:15.</DIV> <DIV class=3Dcontent> <P>This is a <SPAN style=3D"FONT-WEIGHT: bold">really great = effort</SPAN>.=20 It helped me a lot to clear my ambiguities. Please add more in it = with the=20 passage of time when you learns/experiences more about these=20 functions.</P> <P>Best Regards,<BR><SPAN=20 style=3D"FONT-WEIGHT: bold">Aasif</SPAN><BR></P></DIV><!-- BEGIN: = links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4483></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4483">execllent=20 effort</A></H3> <DIV class=3Dsubmitted>Submitted by mirahmad on Fri, 2007-03-09 = 04:42.</DIV> <DIV class=3Dcontent> <P>This is a very good artical for the people who don't know how = to use=20 the function for analytical work.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4763></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 = href=3D"http://www.orafaq.com/node/55#comment-4763">awesome</A></H3> <DIV class=3Dsubmitted>Submitted by kang on Tue, 2008-03-11 = 23:05.</DIV> <DIV class=3Dcontent> <P>awesome.<BR>Thanks.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen=

t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4765></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4765">is this a = bug?</A></H3> <DIV class=3Dsubmitted>Submitted by kang on Wed, 2008-03-12 = 18:27.</DIV> <DIV class=3Dcontent> <P>create table emp (<BR>empno varchar2(10),<BR>deptno=20 varchar2(10),<BR>sal number(10)<BR>)</P> <P>insert into emp(empno,deptno,sal) = values('1','10',101);<BR>insert into=20 emp(empno,deptno,sal) values('2','20',102);<BR>insert into=20 emp(empno,deptno,sal) values('3','20',103);<BR>insert into=20 emp(empno,deptno,sal) values('4','10',104);<BR>insert into=20 emp(empno,deptno,sal) values('5','30',105);<BR>insert into=20 emp(empno,deptno,sal) values('6','30',106);<BR>insert into=20 emp(empno,deptno,sal) values('7','30',107);<BR>insert into=20 emp(empno,deptno,sal) values('8','40',108);<BR>insert into=20 emp(empno,deptno,sal) values('9','30',109);<BR>insert into=20 emp(empno,deptno,sal) values('10','30',110);<BR>insert into=20 emp(empno,deptno,sal) values('11','30',100);</P> <P>SELECT empno, deptno, sal,<BR>last_value(sal)<BR>OVER = (PARTITION BY=20 deptno order by sal desc) col1,<BR>first_value(sal)<BR>OVER = (PARTITION BY=20 deptno order by sal asc) col2,<BR>first_value(sal)<BR>OVER = (PARTITION BY=20 deptno order by sal desc) col3,<BR>last_value(sal)<BR>OVER = (PARTITION BY=20 deptno order by sal asc) col4<BR>FROM emp</P> <P>col2, col3 return what I expect.</P> <P>I don't know why col1 and col4 return the these kinds of=20 results.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4770></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4770">Caveat with = LAST_VALUE=20 function (answering Kang's concern)</A></H3> <DIV class=3Dsubmitted>Submitted by shouvikb on Mon, 2008-03-17 = 23:44.</DIV> <DIV class=3Dcontent> <P>If anyone has Metalink Access, read Doc ID 696344.992.</P> <P>Broadly speaking, <BR>All analytic functions with ORDER BY = operate on a=20 default window - a subset of contiguous rows (according to the = analytic=20 ORDER BY clause) within the partition. The default windowing =

clause is=20 "RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW". This affects = the=20 LAST_VALUE.</P> <P>To get the results as you want you need to have.<BR>(PARTITION = BY=20 deptno order by sal desc ROWS <BR>BETWEEN UNBOUNDED PRECEDING AND=20 UNBOUNDED FOLLOWING).</P> <P>Hope this helps,<BR>Shouvik Basu </P></DIV><!-- BEGIN: links = --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4773></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4773">Query -11 = column=20 CNT_MT_HALF</A></H3> <DIV class=3Dsubmitted>Submitted by jayesh_nazre on Wed, = 2008-03-26=20 10:12.</DIV> <DIV class=3Dcontent> <P>I am finding it hard to understand this can someone explain how = its=20 counting the last column<BR>Based on what I understand = "CNT_LT_HALF"=20 divides the curron row sal and compares with precedding sal row = values and=20 that looks fine (not the count does not include the existing row = in its=20 count so its less that not less than equal to)<BR>however when I = try to=20 apply the same for "CNT_MT_HALF" colum<BR>say take current rows = sal/2 eg.=20 800/2 =3D 400<BR>now within dept =3D 20 if you compare this value = with all the=20 following sal then for the first row "CNT_LT_HALF" column should = have a=20 value of "4" and not "3". I ran the query in Oracle database and = the query=20 matches what the article output is ("3"). I know I am = understanding it=20 wrong, can someone explain</P> <P></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4940></A> <DIV class=3D"comment comment-published">

<H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4940">Way to do a = running=20 total by date.</A></H3> <DIV class=3Dsubmitted>Submitted by ccheilig on Mon, 2008-10-13 = 10:24.</DIV> <DIV class=3Dcontent> <P>I had a really slow sql query that had columns of effecivedate, = amount=20 and running total to date.<BR>by using analytic function I was = able to=20 make a 90 second query a &lt; 2 second query with following=20 syntax.<BR><BR>SELECT effectivedate, amount, SUM(amount) OVER = (PARTITION=20 BY sysdate ORDER BY effectivedate)<BR>FROM mytable<BR>ORDER BY=20 effectivedate DESC </P> <P>I think this little snippet will be useful in many=20 applications.<BR>Truly enyoyed your article which gave me the idea = to try=20 it this way! Thanks so much!</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4954></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4954">Analytic=20 Function</A></H3> <DIV class=3Dsubmitted>Submitted by zhopka on Tue, 2008-11-11 = 10:20.</DIV> <DIV class=3Dcontent> <P>Am I doing something wrong?<BR>I have table a and table b, the = relation=20 between them is one to many. In table a I have column tax, in = table b I=20 have unit price and qty, what I need to get by my query is avg = tax, total=20 (sum) tax and sum of price*qty. I have problem with avg_tax_chg = and=20 doc_$_tot when join tables. Can somebody help?<BR>select = a.doc_num,=20 a.tax_chg, <BR>avg(a.tax_chg) over ( ) = avg_tax_chg,<BR>sum(a.tax_chg) over=20 (partition by a.ord_tp_cd,a.final_dt,a.stat_cd)=20 tot_tax_chg,<BR>sum(b.qty*b.unit_prc) over (partition by = s.del_doc_num)=20 doc_$_tot<BR>from a, b<BR>where a.doc_num =3D b.doc_num</P> <P>Thanks<BR></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links =

--></DIV><A=20 id=3Dcomment-4968></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4968">Recursive = Sum</A></H3> <DIV class=3Dsubmitted>Submitted by muratyildiz on Sat, 2008-11-29 = 20:02.</DIV> <DIV class=3Dcontent> <P>I want to recursevi summary by using analytic functions. = <BR>How can I=20 do?<BR>Thanks<BR>For example:</P> <P>A TABLE B TABLE SQL RESULT MUST BE<BR>CODE CODE VALUES CODE=20 SUM()<BR>----- ------------- ------------------------<BR>1 10000 = 200 1=20 600<BR>10 10001 300 10 600<BR>100 10010 100 100 600<BR>1000 2000 = 200 1000=20 500 <BR>10000 10000 200 <BR>10001 10001 300 <BR>1001 1001 = 100<BR>10010=20 10010 100<BR>2 2 200 <BR>20=20 ....................<BR>200<BR>2000<BR>....</P></DIV><!-- BEGIN: = links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-4976></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4976">This topic is = however=20 quite</A></H3> <DIV class=3Dsubmitted>Submitted by swainprafullaranjan on Tue, = 2008-12-09=20 03:03.</DIV> <DIV class=3Dcontent> <P>This topic is however quite informative and constructive = .<BR>But there=20 are some explainations in which still abscruity is there<BR>So in = the next=20 topic please try to give the proper and cleare = explaination</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links --></DIV> <DIV class=3Dindented><A id=3Dcomment-4985></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4985">This Article = is a Model=20 Example of Analytical Writing Clarity</A></H3>

<DIV class=3Dsubmitted>Submitted by harrysmall3 on Fri, 2008-12-19 = 18:27.</DIV> <DIV class=3Dcontent> <P>RE:"This topic is however quite"</P> <P>Mr. Swainprafullaranjan, the only obscurity with the text on = this page=20 lay within the content of your comment. You provide incomplete = sentences=20 with the majority of words mis-spelled and absolutely no reference = to what=20 part of the article text that you find unclear or improper . </P> <P>Had you written your thoughts truly as just a comment I would = have=20 refrained from mine. Since you felt obliged to lecture the author = on=20 improvement before writing further topics, I feel absolutely = obliged to=20 provide the same suggestion to you before critiquing any future = article,=20 post, or comment on this site. </P> <P>Shouvic Basu effectively conveyed in his article, completely, = what his=20 topic statement intended- to provide ".. a clear, thorough concept = of=20 analytic functions and its various options by a series of simple = yet=20 concept building examples". </P> <P>The flow of his presentation demonstrates a unique ability that = I would=20 coin as "precision in detail" of the subject matter. The quantity = of=20 detail and selection of organization in my opinion produced an = article of=20 many abilities - readability, learnability, capability... and = enjoyability=20 - a rare treat in reference material work. </P> <P>I believe this view is the shared consensus amongst his = readers. I can=20 relate exactly to the response by Luke Curran: "Excellent article. = I=20 personally learn best with simple examples to demonstrate = potentially=20 complex concepts ... and this article was perfect. Thanks. "</P> <P>Shouvic, I appreciate with great admiration your knowledge = sharing and=20 look forward to all future topics that you chose to cover. I have = been=20 working extensively with analytic functions on my current work = projects=20 and this article filled in a lot of background for me as well as = new areas=20 to further this study. </P> <P>As an author of a chess novel myself, there were periods = -painstaking=20 times -in my writing that in retrospect had I posessed the same = ability to=20 convey detail as you with such precision, I believe that I would = not be=20 dyeing as much grey hair today!</P>

<P>Best Regards, <BR>Harry</P> <P></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV></DIV><A=20 id=3Dcomment-4999></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-4999">Thanks for a = Very Useful=20 Article</A></H3> <DIV class=3Dsubmitted>Submitted by Dipali Vithalani on Sat, = 2009-01-03=20 07:21.</DIV> <DIV class=3Dcontent> <P>Hi, </P> <P>I decided to learn analytical functions conceptually and = luckily I got=20 this article. Its very useful. The way of treating the subject is = very=20 effective. While reading, I tried them practically and now I am = quite=20 confident about their usage.</P> <P>Thanks a lot for such a useful article!</P> <P>Regards,<BR>Dipali.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-5131></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-5131">It is very=20 helpful</A></H3> <DIV class=3Dsubmitted>Submitted by cpsundar on Fri, 2009-02-27 = 14:48.</DIV> <DIV class=3Dcontent> <P>It gives quick understanding of analytical function.<BR>Great = work.</P> <P>Thanks for your article.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-5422></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20

= href=3D"http://www.orafaq.com/node/55#comment-5422">Awesome</A></H3> <DIV class=3Dsubmitted>Submitted by holdingbe on Thu, 2009-04-02=20 08:53.</DIV> <DIV class=3Dcontent> <P>Thanks a lot for such a useful article! </P></DIV><!-- BEGIN: = links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6016></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6016">Very Good=20 Overview</A></H3> <DIV class=3Dsubmitted>Submitted by Vackar on Tue, 2009-11-03 = 08:40.</DIV> <DIV class=3Dcontent> <P>That was one of the best articles I've read in terms of how to = explain=20 an otherwise rather complicated topic.</P> <P>Great work!!</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6135></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6135">YTD = Calculation using=20 analytical functions</A></H3> <DIV class=3Dsubmitted>Submitted by tssr_2001 on Thu, 2010-02-04=20 03:41.</DIV> <DIV class=3Dcontent> <P>Hi, </P> <P>I am using Oracle Database 10gR1.<BR>Please help me to write = the=20 following query.</P> <P>I want to calculate ytd ( year to date calculation ), then i = have to=20 sum up monthly then sum up for yearly. <BR>Eg : I have to = calculate YTD as=20 follows : </P> <P>GL Curr Day Amount Month YTD <BR>5805 45454 1-Jan 5.23 5.23 = 5.23=20 <BR>5805 45454 2-Jan -4.52 0.71 5.94 <BR>5805 45454 3-Jan 25.3 = 26.01 31.95=20 <BR>5805 45454 4-Jan 10.53 36.54 68.49 <BR>5805 45454 5-Jan -1.88 = 34.66=20 103.15 </P>

<P>Here in this example, we have column names as gl, curr, day, = amount,=20 month, year ; taken from a 1 transaction table. <BR>Now, To = calculate ytd=20 (year to-date calculation), i have to calculate month first and = then year.=20 </P> <P>Step 1: Month wise summation : <BR>I have to calculate sum for = each day=20 of the month. </P> <P>From above example for month wise summation: <BR>GL Curr Day = Amount=20 Month <BR>5805 45454 1-Jan 5.23 5.23 ( sum of jan1 =3D 5.23 ) = <BR>5805 45454=20 2-Jan -4.52 0.71 ( sum of jan2 =3D 5.23 + (-4.52) =3D 0.71 ) = <BR>5805 45454=20 3-Jan 25.3 26.01 ( sum of jan3 =3D 0.71 + 25.3 =3D 26.01 ) = <BR>5805 45454=20 4-Jan 10.53 36.54 ( sum of jan4 =3D 26.01 + 10.53 =3D 36.54 ) = <BR>5805 45454=20 5-Jan -1.88 34.66 ( sum of jan4 =3D 36.54 + (-1.88) =3D 34.66 ) = </P> <P>Step 2: Year wise summation : YTD Calculation : <BR>We have = done Step1=20 process to calculate this Step2 process, i.e., YTD Calculation. = <BR>So, we=20 have to do Year wise summation with the Step1 month wise data ( = with the=20 above output date ). </P> <P>Again, from above example for year wise summation: <BR>GL Curr = Day=20 Amount Month YTD <BR>5805 45454 1-Jan 5.23 5.23 5.23 ( ytd =3D = 5.23 )=20 <BR>5805 45454 2-Jan -4.52 0.71 5.94 ( ytd =3D 5.23 + 0.71 =3D = 5.94) <BR>5805=20 45454 3-Jan 25.3 26.01 31.95 ( ytd =3D 5.94 + 26.01 =3D 31.95 ) = <BR>5805 45454=20 4-Jan 10.53 36.54 68.49 ( ytd =3D 31.95 + 36.54 =3D 68.49 ) = <BR>5805 45454=20 5-Jan -1.88 34.66 103.15 ( ytd =3D 68.49 + 34.66 =3D 103.15 ) </P> <P>So for year to-date calculation, we have to sum all the dates = for a=20 month and then sum all the month to get ytd. <BR>How can i do this = ytd=20 using any analytical functions (i.e., i have to sum up for every = row) ?=20 </P> <P>Thanks.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links --></DIV> <DIV class=3Dindented><A id=3Dcomment-6383></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6383">answer to=20 tssr_2001</A></H3>

<DIV class=3Dsubmitted>Submitted by pakkiaraj on Thu, 2010-12-30=20 00:46.</DIV> <DIV class=3Dcontent> <P>Hi,</P> <P>select b.*,sum(month) over(partition by GL order by day) YEAR = from=20 (select gl,curr,day,amount,sum(amount) over(partition by GL order = by day)=20 month from temp1_p ) b.</P> <P>This article is very nice. HatZ off to ORAFAQ!</P></DIV><!-- = BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV></DIV><A=20 id=3Dcomment-6158></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6158">Good = explanation of=20 Analytical Functions</A></H3> <DIV class=3Dsubmitted>Submitted by bhavin_rudani on Sat, = 2010-02-20=20 04:41.</DIV> <DIV class=3Dcontent> <P>Thanks for the details on Analytical Functions</P></DIV><!-- = BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6195></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6195">Great = teacher!</A></H3> <DIV class=3Dsubmitted>Submitted by sadenwala on Fri, 2010-03-26=20 12:32.</DIV> <DIV class=3Dcontent> <P>With 16 years of Oracle experience, I would just stay away from = "partion by" and "over" clause, because I never really understood = what it=20 did. Your article is an eye opener for me. Yeah, promise I will = buy your=20 book if you write one!!</P> <P>THANK YOU!!</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen=

t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6198></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6198">Thanks for the = Post</A></H3> <DIV class=3Dsubmitted>Submitted by panyamravi on Tue, 2010-03-30=20 08:08.</DIV> <DIV class=3Dcontent> <P>It's nice to see a detailed explanation about the Analytical = Functions=20 by considering our old "EMP" database as the source.</P></DIV><!-- = BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6258></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6258">Good Article = on=20 analytical functions</A></H3> <DIV class=3Dsubmitted>Submitted by shivakrishnas on Fri, = 2010-06-25=20 06:09.</DIV> <DIV class=3Dcontent> <P>Thank you for giving clear explanation about analytical = functions. Very=20 useful.</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6340></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6340">Very good = article for=20 analytical functions</A></H3> <DIV class=3Dsubmitted>Submitted by prashantgauda on Mon, = 2010-11-15=20 03:23.</DIV> <DIV class=3Dcontent> <P>Yesterday, I was dealing with some of the queries asked by my = brother=20 which I find very cumbersome with group by and long query.</P> <P>I searched for analytical functions and believe me the content = in your=20

post is so easy to understand that I quickly solved his query and=20 protected my image of knowing a bit more than him. :)</P> <P>Anyway, I have suggested him to stick to your examples for = basic=20 understanding.</P> <P>Thanks for very good post.</P> <P>Thanks,<BR>Prashant Gauda</P> <P></P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV><A=20 id=3Dcomment-6346></A> <DIV class=3D"comment comment-published"> <H3 class=3Dtitle><A class=3Dactive=20 href=3D"http://www.orafaq.com/node/55#comment-6346">wha are = analytic=20 functions different from group or aggregate fun</A></H3> <DIV class=3Dsubmitted>Submitted by ramth85 on Mon, 2010-11-22 = 03:13.</DIV> <DIV class=3Dcontent> <P>Fine answer!</P></DIV><!-- BEGIN: links --> <DIV class=3Dlinks>=C2=BB=20 <UL class=3Dlinks> <LI class=3D"comment_forbidden first last"><SPAN><A=20 = href=3D"http://www.orafaq.com/user/login?destination=3Dnode%2F55%23commen= t-form">Login</A>=20 to post comments</SPAN></LI></UL></DIV><!-- END: links = --></DIV></DIV><!-- end main content --></DIV><!-- main = --></TD></TR></TBODY></TABLE> <TABLE id=3Dfooter-menu border=3D0 cellSpacing=3D0 summary=3D"Navigation = elements."=20 cellPadding=3D0 width=3D"100%"> <TBODY> <TR> <TD vAlign=3Dcenter align=3Dmiddle> <DIV class=3Dsecondary-links>.:: <A title=3D"User blogs and blog = aggregator"=20 href=3D"http://www.orafaq.com/">Blogger Home</A> :: <A=20 title=3D"The Oracle Wiki" href=3D"http://www.orafaq.com/wiki">Wiki = Home</A> ::=20 <A title=3D"Oracle discussion forums"=20 href=3D"http://www.orafaq.com/forum">Forum Home</A> :: <A=20 title=3D"This site's privacy policy"=20 = href=3D"http://www.orafaq.com/wiki/Oracle_FAQ:Privacy_policy">Privacy</A>= ::=20 <A title=3D"Contact us" = href=3D"http://www.orafaq.com/feedback">Contact</A>=20 ::. </DIV></TD></TR></TBODY></TABLE></BODY></HTML> ------=_NextPart_001_003F_01CBBDA0.4922DE30 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.orafaq.com/admin/ads/www/delivery/afr.php?n=a2142ff

6&zoneid=1 =EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Advertisement</TITLE> <META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type> <META name=3DGENERATOR content=3D"MSHTML 8.00.7600.16700"></HEAD> <BODY style=3D"TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; WIDTH: = 100%"=20 leftMargin=3D0 topMargin=3D0 marginheight=3D"0" marginwidth=3D"0"> <SCRIPT type=3Dtext/javascript><!--=0A= google_ad_client =3D "pub-7499460687650857";=0A= google_alternate_ad_url =3D "http://www.orafaq.com/ads/adcode-2.htm";=0A= google_ad_width =3D 468;=0A= google_ad_height =3D 60;=0A= google_ad_format =3D "468x60_as";=0A= google_ad_channel =3D"";=0A= google_color_bg =3D "0051102";=0A= google_color_url =3D "153204255";=0A= google_color_link =3D "25510200";=0A= google_color_text =3D "255255255";=0A= google_color_border =3D "0051102";=0A= //--></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js">=0A= </SCRIPT> <DIV style=3D"POSITION: absolute; VISIBILITY: hidden; TOP: 0px; LEFT: = 0px"=20 id=3Dbeacon_e22cc2b7f9><IMG style=3D"WIDTH: 0px; HEIGHT: 0px" alt=3D""=20 src=3D"http://www.orafaq.com/admin/ads/www/delivery/lg.php?bannerid=3D1&a= mp;campaignid=3D1&amp;zoneid=3D1&amp;channel_ids=3D,&amp;cb=3De22cc2b7f9"= =20 width=3D0 height=3D0></DIV></BODY></HTML> ------=_NextPart_001_003F_01CBBDA0.4922DE30-------=_NextPart_000_0022_01CBBDA0.49215790--

Das könnte Ihnen auch gefallen