blob: 990759a05dee9be6bfbb4d2be87643cad635d7c9 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-querying/sql-window-functions">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Window functions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/28.0.1/querying/sql-window-functions"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Window functions | Apache® Druid"><meta data-rh="true" name="description" content="&lt;!--"><meta data-rh="true" property="og:description" content="&lt;!--"><link data-rh="true" rel="icon" href="/img/favicon.png"><link data-rh="true" rel="canonical" href="https://druid.apache.org/docs/28.0.1/querying/sql-window-functions"><link data-rh="true" rel="alternate" href="https://druid.apache.org/docs/28.0.1/querying/sql-window-functions" hreflang="en"><link data-rh="true" rel="alternate" href="https://druid.apache.org/docs/28.0.1/querying/sql-window-functions" hreflang="x-default">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
<link rel="stylesheet" href="/css/all.css">
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.546f39eb.css">
<link rel="preload" href="/assets/js/runtime~main.a6b9689c.js" as="script">
<link rel="preload" href="/assets/js/main.f7be26bf.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/druid_nav.png" alt="Apache® Druid" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/druid_nav.png" alt="Apache® Druid" class="themedImage_ToTc themedImage--dark_i4oU"></div></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/technology">Technology</a><a class="navbar__item navbar__link" href="/use-cases">Use Cases</a><a class="navbar__item navbar__link" href="/druid-powered">Powered By</a><a class="navbar__item navbar__link" href="/docs/28.0.1/design/">Docs</a><a class="navbar__item navbar__link" href="/community/">Community</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Apache®</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://apachecon.com/?ref=druid.apache.org" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a class="navbar__item navbar__link" href="/downloads/">Download</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/design/">Getting started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/tutorials/tutorial-msq-extern">Tutorials</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/design/architecture">Design</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/ingestion/">Ingestion</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/data-management/">Data management</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/28.0.1/querying/sql">Querying</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/docs/28.0.1/querying/sql">Druid SQL</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql">Overview and syntax</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/tips-good-queries">Tips for writing good queries</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/query-deep-storage">Query from deep storage</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-data-types">SQL data types</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-operators">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-scalar">Scalar functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-aggregations">Aggregation functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/28.0.1/querying/sql-window-functions">Window functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-array-functions">Array functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-multivalue-string-functions">Multi-value string functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-json-functions">JSON functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-functions">All functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-query-context">SQL query context</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-metadata-tables">SQL metadata tables</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/sql-translation">SQL query translation</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/">Native queries</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/query-execution">Query execution</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/28.0.1/querying/troubleshooting">Troubleshooting</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/28.0.1/querying/datasource">Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/28.0.1/querying/timeseriesquery">Native query types</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/28.0.1/querying/filters">Native query components</a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/api-reference/">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/configuration/">Configuration</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/operations/web-console">Operations</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/development/overview">Development</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/misc/papers-and-talks">Misc</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/28.0.1/release-info/release-notes">Release info</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Querying</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Druid SQL</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Window functions</span><meta itemprop="position" content="3"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Window functions</h1></header><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Apache Druid supports two query languages: <a href="/docs/28.0.1/querying/sql">Druid SQL</a> and <a href="/docs/28.0.1/querying/">native queries</a>.
This document describes the SQL language.</p><p>Window functions are an <a href="/docs/28.0.1/development/experimental">experimental</a> feature.
Development and testing are still at early stage. Feel free to try window functions and provide your feedback.
Windows functions are not currently supported by multi-stage-query engine so you cannot use them in SQL-based ingestion. </p><p>Set the context parameter <code>enableWindowing: true</code> to use window functions.</p></div></div><p>Window functions in Apache Druid produce values based upon the relationship of one row within a window of rows to the other rows within the same window. A window is a group of related rows within a result set. For example, rows with the same value for a specific dimension.</p><p>The following example organizes results with the same <code>channel</code> value into windows. For each window, the query returns the rank of each row in ascending order based upon its <code>delta</code> value.</p><p>Window functions in Druid require a GROUP BY statement. Druid performs the row-level aggregations for the GROUP BY before performing the window function calculations.</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">SELECT</span><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">DAY</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> event_time</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> change</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> RANK</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> rank_value</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">FROM</span><span class="token plain"> wikipedia</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">WHERE</span><span class="token plain"> channel </span><span class="token operator" style="color:rgb(137, 221, 255)">in</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#kk.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#lt.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token operator" style="color:rgb(137, 221, 255)">AND</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;2016-06-28&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">DAY</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;2016-06-26&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">GROUP</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> __time</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">WINDOW w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">PARTITION</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel </span><span class="token keyword" style="font-style:italic">ORDER</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">ASC</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary> View results </summary><div><div class="collapsibleContent_i85q"><table><thead><tr><th><code>event_time</code></th><th><code>channel</code></th><th><code>change</code></th><th><code>rank_value</code></th></tr></thead><tbody><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>1</td><td>1</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>1</td><td>1</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>7</td><td>3</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>56</td><td>4</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>56</td><td>4</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>63</td><td>6</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>91</td><td>7</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2440</td><td>8</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2703</td><td>9</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>6900</td><td>10</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>1</td><td>1</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>2</td><td>2</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>13</td><td>3</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>28</td><td>4</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>53</td><td>5</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>56</td><td>6</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>59</td><td>7</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>391</td><td>8</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>894</td><td>9</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>4358</td><td>10</td></tr></tbody></table></div></div></details><p>Window functions are similar to <a href="/docs/28.0.1/querying/aggregations">aggregation functions</a>. </p><p>You can use the OVER clause to treat other Druid aggregation functions as window functions. For example, the sum of a value for rows within a window.</p><p>Window functions support aliasing.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="define-a-window-with-the-over-clause">Define a window with the OVER clause<a href="#define-a-window-with-the-over-clause" class="hash-link" aria-label="Direct link to Define a window with the OVER clause" title="Direct link to Define a window with the OVER clause"></a></h2><p>The OVER clause defines the query windows for window functions as follows:</p><ul><li>PARTITION BY indicates the dimension that defines the rows within the window</li><li>ORDER BY specifies the order of the rows within the windows.</li></ul><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Sometimes windows are called partitions. However, the partitioning for window functions are a shuffle (partition) of the result set created at query time and is not to be confused with Druid&#x27;s segment partitioning feature which partitions data at ingest time.</p></div></div><p>The following OVER clause example sets the window dimension to <code>channel</code> and orders the results by the absolute value of <code>delta</code> ascending:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">RANK</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">PARTITION</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel </span><span class="token keyword" style="font-style:italic">ORDER</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">ASC</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="window-function-reference">Window function reference<a href="#window-function-reference" class="hash-link" aria-label="Direct link to Window function reference" title="Direct link to Window function reference"></a></h2><table><thead><tr><th>Function</th><th>Notes</th></tr></thead><tbody><tr><td><code>ROW_NUMBER()</code></td><td>Returns the number of the row within the window</td></tr><tr><td><code>RANK()</code></td><td>Returns the rank for a row within a window</td></tr><tr><td><code>DENSE_RANK()</code></td><td>Returns the rank for a row within a window without gaps. For example, if two rows tie for rank of 1, the subsequent row is ranked 2.</td></tr><tr><td><code>PERCENT_RANK()</code></td><td>Returns the rank of the row calculated as a percentage according to the formula: <code>(rank - 1) / (total window rows - 1)</code></td></tr><tr><td><code>CUME_DIST()</code></td><td>Returns the cumulative distribution of the current row within the window calculated as <code>number of window rows at the same rank or higher than current row</code> / <code>total window rows</code></td></tr><tr><td><code>NTILE(tiles)</code></td><td>Divides the rows within a window as evenly as possible into the number of tiles, also called buckets, and returns the value of the tile that the row falls into</td></tr><tr><td><code>LAG(expr[, offset])</code></td><td>Returns the value evaluated at the row that precedes the current row by the offset number within the window. <code>offset</code> defaults to 1 if not provided</td></tr><tr><td><code>LEAD(expr[, offset])</code></td><td>Returns the value evaluated at the row that follows the current row by the offset number within the window; if there is no such row, returns the given default value. <code>offset</code> defaults to 1 if not provided</td></tr><tr><td><code>FIRST_VALUE(expr)</code></td><td>Returns the value for the expression for the first row within the window</td></tr><tr><td><code>LAST_VALUE(expr)</code></td><td>Returns the value for the expression for the last row within the window</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2><p>The following example illustrates all of the built-in window functions to compare the number of characters changed per event for a channel in the Wikipedia data set.</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">SELECT</span><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">DAY</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> event_time</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> change</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ROW_NUMBER</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> row_no</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> RANK</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> rank_no</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> DENSE_RANK</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> dense_rank_no</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> PERCENT_RANK</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> pct_rank</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> CUME_DIST</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> cumulative_dist</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> NTILE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> ntile_val</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> LAG</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> lag_val</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> LEAD</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> lead_val</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> FIRST_VALUE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> first_val</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> LAST_VALUE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> last_val</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">FROM</span><span class="token plain"> wikipedia</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">WHERE</span><span class="token plain"> channel </span><span class="token operator" style="color:rgb(137, 221, 255)">IN</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#kk.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#lt.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">GROUP</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">DAY</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">WINDOW w </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">PARTITION</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel </span><span class="token keyword" style="font-style:italic">ORDER</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">ASC</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary> View results </summary><div><div class="collapsibleContent_i85q"><table><thead><tr><th><code>event_time</code></th><th><code>channel</code></th><th><code>change</code></th><th><code>row_no</code></th><th><code>rank_no</code></th><th><code>dense_rank_no</code></th><th><code>pct_rank</code></th><th><code>cumulative_dist</code></th><th><code>ntile_val</code></th><th><code>lag_val</code></th><th><code>lead_val</code></th><th><code>first_val</code></th><th><code>last_val</code></th></tr></thead><tbody><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>1</td><td>1</td><td>1</td><td>1</td><td>0.0</td><td>0.125</td><td>1</td><td>null</td><td>7</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>7</td><td>2</td><td>2</td><td>2</td><td>0.14285714285714285</td><td>0.25</td><td>1</td><td>1</td><td>56</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>56</td><td>3</td><td>3</td><td>3</td><td>0.2857142857142857</td><td>0.375</td><td>2</td><td>7</td><td>63</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>63</td><td>4</td><td>4</td><td>4</td><td>0.42857142857142855</td><td>0.5</td><td>2</td><td>56</td><td>91</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>91</td><td>5</td><td>5</td><td>5</td><td>0.5714285714285714</td><td>0.625</td><td>3</td><td>63</td><td>2440</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2440</td><td>6</td><td>6</td><td>6</td><td>0.7142857142857143</td><td>0.75</td><td>3</td><td>91</td><td>2703</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2703</td><td>7</td><td>7</td><td>7</td><td>0.8571428571428571</td><td>0.875</td><td>4</td><td>2440</td><td>6900</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>6900</td><td>8</td><td>8</td><td>8</td><td>1</td><td>1</td><td>4</td><td>2703</td><td>null</td><td>1</td><td>6900</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0.1</td><td>1</td><td>null</td><td>2</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>2</td><td>2</td><td>2</td><td>2</td><td>0.1111111111111111</td><td>0.2</td><td>1</td><td>1</td><td>13</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>13</td><td>3</td><td>3</td><td>3</td><td>0.2222222222222222</td><td>0.3</td><td>1</td><td>2</td><td>28</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>28</td><td>4</td><td>4</td><td>4</td><td>0.3333333333333333</td><td>0.4</td><td>2</td><td>13</td><td>53</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>53</td><td>5</td><td>5</td><td>5</td><td>0.4444444444444444</td><td>0.5</td><td>2</td><td>28</td><td>56</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>56</td><td>6</td><td>6</td><td>6</td><td>0.5555555555555556</td><td>0.6</td><td>2</td><td>53</td><td>59</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>59</td><td>7</td><td>7</td><td>7</td><td>0.6666666666666666</td><td>0.7</td><td>3</td><td>56</td><td>391</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>391</td><td>8</td><td>8</td><td>8</td><td>0.7777777777777778</td><td>0.8</td><td>3</td><td>59</td><td>894</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>894</td><td>9</td><td>9</td><td>9</td><td>0.8888888888888888</td><td>0.9</td><td>4</td><td>391</td><td>4358</td><td>1</td><td>4358</td></tr><tr><td><code>2016-06-27T00:00:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>4358</td><td>10</td><td>10</td><td>10</td><td>1</td><td>1</td><td>4</td><td>894</td><td>null</td><td>1</td><td>4358</td></tr></tbody></table></div></div></details><p>The following example demonstrates applying the SUM() function over the values in a window to calculate the cumulative changes to a channel over time:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">SELECT</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">MINUTE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">as</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;time&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> changes</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">sum</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">ABS</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">delta</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">OVER</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">PARTITION</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel </span><span class="token keyword" style="font-style:italic">ORDER</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> FLOOR</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">__time </span><span class="token keyword" style="font-style:italic">TO</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">MINUTE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">ASC</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">AS</span><span class="token plain"> cum_changes</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">FROM</span><span class="token plain"> wikipedia</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">WHERE</span><span class="token plain"> channel </span><span class="token operator" style="color:rgb(137, 221, 255)">IN</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#kk.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;#lt.wikipedia&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">GROUP</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">BY</span><span class="token plain"> channel</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> __time</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> delta</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary> View results </summary><div><div class="collapsibleContent_i85q"><table><thead><tr><th><code>time</code></th><th><code>channel</code></th><th><code>changes</code></th><th><code>cum_changes</code></th></tr></thead><tbody><tr><td><code>2016-06-27T04:20:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>56</td><td>56</td></tr><tr><td><code>2016-06-27T04:35:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2440</td><td>2496</td></tr><tr><td><code>2016-06-27T06:15:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>91</td><td>2587</td></tr><tr><td><code>2016-06-27T07:32:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>1</td><td>2588</td></tr><tr><td><code>2016-06-27T09:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>2703</td><td>5291</td></tr><tr><td><code>2016-06-27T09:24:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>1</td><td>5292</td></tr><tr><td><code>2016-06-27T11:00:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>63</td><td>5355</td></tr><tr><td><code>2016-06-27T11:05:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>7</td><td>5362</td></tr><tr><td><code>2016-06-27T11:32:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>56</td><td>5418</td></tr><tr><td><code>2016-06-27T15:21:00.000Z</code></td><td><code>#kk.wikipedia</code></td><td>6900</td><td>12318</td></tr><tr><td><code>2016-06-27T06:17:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>2</td><td>2</td></tr><tr><td><code>2016-06-27T07:55:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>13</td><td>15</td></tr><tr><td><code>2016-06-27T09:05:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>894</td><td>909</td></tr><tr><td><code>2016-06-27T09:12:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>391</td><td>1300</td></tr><tr><td><code>2016-06-27T09:23:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>56</td><td>1356</td></tr><tr><td><code>2016-06-27T10:59:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>1</td><td>1357</td></tr><tr><td><code>2016-06-27T11:49:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>59</td><td>1416</td></tr><tr><td><code>2016-06-27T12:41:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>53</td><td>1469</td></tr><tr><td><code>2016-06-27T12:58:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>28</td><td>1497</td></tr><tr><td><code>2016-06-27T19:03:00.000Z</code></td><td><code>#lt.wikipedia</code></td><td>4358</td><td>5855</td></tr></tbody></table></div></div></details><h2 class="anchor anchorWithStickyNavbar_LWe7" id="known-issues">Known issues<a href="#known-issues" class="hash-link" aria-label="Direct link to Known issues" title="Direct link to Known issues"></a></h2><p>The following are known issues with window functions:</p><ul><li>Aggregates with ORDER BY specified are processed in the window: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW<br>This behavior differs from other databases that use the default of RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.<br>In cases where the order column is unique there is no difference between RANGE / ROWS; windows with RANGE specifications are handled as ROWS.</li><li>LEAD/LAG ignores the default value</li><li>LAST_VALUE returns the last value of the window even when you include an ORDER BY clause</li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/28.0.1/querying/sql-aggregations"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Aggregation functions</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/28.0.1/querying/sql-array-functions"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Array functions</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#define-a-window-with-the-over-clause" class="table-of-contents__link toc-highlight">Define a window with the OVER clause</a></li><li><a href="#window-function-reference" class="table-of-contents__link toc-highlight">Window function reference</a></li><li><a href="#examples" class="table-of-contents__link toc-highlight">Examples</a></li><li><a href="#known-issues" class="table-of-contents__link toc-highlight">Known issues</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div><div class="footer__copyright">Copyright © 2023 Apache Software Foundation. Except where otherwise noted, licensed under CC BY-SA 4.0. Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</div></div></div></footer></div>
<script src="/assets/js/runtime~main.a6b9689c.js"></script>
<script src="/assets/js/main.f7be26bf.js"></script>
</body>
</html>