12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140 |
- # Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- #
- # This file is derived from the logic test suite in CockroachDB. The
- # original file was retrieved on June 10, 2019 from:
- #
- # https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/window
- #
- # The original source code is subject to the terms of the Apache
- # 2.0 license, a copy of which can be found in the LICENSE file at the
- # root of this repository.
- # not supported yet
- halt
- mode cockroach
- statement ok
- CREATE TABLE kv (
- -- don't add column "a"
- k INT PRIMARY KEY,
- v INT,
- w INT,
- f FLOAT,
- d DECIMAL,
- s STRING,
- b BOOL,
- FAMILY (k, v, w, f, b),
- FAMILY (d),
- FAMILY (s)
- )
- statement OK
- INSERT INTO kv VALUES
- (1, 2, 3, 1.0, 1, 'a', true),
- (3, 4, 5, 2, 8, 'a', true),
- (5, NULL, 5, 9.9, -321, NULL, false),
- (6, 2, 3, 4.4, 4.4, 'b', true),
- (7, 2, 2, 6, 7.9, 'b', true),
- (8, 4, 2, 3, 3, 'A', false)
- query error window functions are not allowed in GROUP BY
- SELECT * FROM kv GROUP BY v, count(w) OVER ()
- query error window functions are not allowed in GROUP BY
- SELECT count(w) OVER () FROM kv GROUP BY 1
- query error window functions are not allowed in RETURNING
- INSERT INTO kv (k, v) VALUES (99, 100) RETURNING sum(v) OVER ()
- query error window functions are not allowed in LIMIT
- SELECT sum(v) FROM kv GROUP BY k LIMIT sum(v) OVER ()
- query error window functions are not allowed in OFFSET
- SELECT sum(v) FROM kv GROUP BY k LIMIT 1 OFFSET sum(v) OVER ()
- query error window functions are not allowed in VALUES
- INSERT INTO kv (k, v) VALUES (99, count(1) OVER ())
- query error window functions are not allowed in WHERE
- SELECT k FROM kv WHERE avg(k) OVER () > 1
- query error window functions are not allowed in HAVING
- SELECT 1 FROM kv GROUP BY 1 HAVING sum(1) OVER (PARTITION BY 1) > 1
- query R
- SELECT avg(k) OVER () FROM kv ORDER BY 1
- ----
- 5
- 5
- 5
- 5
- 5
- 5
- query R
- SELECT avg(k) OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 4.6666666666666666667
- 4.6666666666666666667
- 4.6666666666666666667
- 5
- 5.5
- 5.5
- query R
- SELECT avg(k) OVER (PARTITION BY w) FROM kv ORDER BY 1
- ----
- 3.5
- 3.5
- 4
- 4
- 7.5
- 7.5
- query R
- SELECT avg(k) OVER (PARTITION BY b) FROM kv ORDER BY 1
- ----
- 4.25
- 4.25
- 4.25
- 4.25
- 6.5
- 6.5
- query R
- SELECT avg(k) OVER (PARTITION BY w, b) FROM kv ORDER BY 1
- ----
- 3
- 3.5
- 3.5
- 5
- 7
- 8
- query R
- SELECT avg(k) OVER (PARTITION BY kv.*) FROM kv ORDER BY 1
- ----
- 1
- 3
- 5
- 6
- 7
- 8
- query R
- SELECT avg(k) OVER (ORDER BY w) FROM kv ORDER BY 1
- ----
- 5
- 5
- 5.5
- 5.5
- 7.5
- 7.5
- query R
- SELECT avg(k) OVER (ORDER BY b) FROM kv ORDER BY 1
- ----
- 5
- 5
- 5
- 5
- 6.5
- 6.5
- query R
- SELECT avg(k) OVER (ORDER BY w, b) FROM kv ORDER BY 1
- ----
- 5
- 5.4
- 5.5
- 5.5
- 7.5
- 8
- query R
- SELECT avg(k) OVER (ORDER BY 1-w) FROM kv ORDER BY 1
- ----
- 3.75
- 3.75
- 4
- 4
- 5
- 5
- query R
- SELECT avg(k) OVER (ORDER BY kv.*) FROM kv ORDER BY 1
- ----
- 1
- 2
- 3
- 3.75
- 4.4
- 5
- query R
- SELECT avg(k) OVER (ORDER BY w DESC) FROM kv ORDER BY 1
- ----
- 3.75
- 3.75
- 4
- 4
- 5
- 5
- query R
- SELECT avg(k) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 4.6666666666666666667
- 4.6666666666666666667
- 5
- 5.5
- 7
- 8
- query R
- SELECT avg(k) OVER w FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
- ----
- 4.6666666666666666667
- 4.6666666666666666667
- 5
- 5.5
- 7
- 8
- query R
- SELECT avg(k) OVER (w) FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
- ----
- 4.6666666666666666667
- 4.6666666666666666667
- 5
- 5.5
- 7
- 8
- query R
- SELECT avg(k) OVER (w ORDER BY w) FROM kv WINDOW w AS (PARTITION BY v) ORDER BY 1
- ----
- 4.6666666666666666667
- 4.6666666666666666667
- 5
- 5.5
- 7
- 8
- query IIIRRTBR colnames
- SELECT *, avg(k) OVER (w ORDER BY w) FROM kv WINDOW w AS (PARTITION BY v) ORDER BY 1
- ----
- k v w f d s b avg
- 1 2 3 1 1 a true 4.6666666666666666667
- 3 4 5 2 8 a true 5.5
- 5 NULL 5 9.9 -321 NULL false 5
- 6 2 3 4.4 4.4 b true 4.6666666666666666667
- 7 2 2 6 7.9 b true 7
- 8 4 2 3 3 A false 8
- query IIIRRTBR colnames
- SELECT *, avg(k) OVER w FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY avg(k) OVER w, k
- ----
- k v w f d s b avg
- 1 2 3 1 1 a true 4.6666666666666666667
- 6 2 3 4.4 4.4 b true 4.6666666666666666667
- 5 NULL 5 9.9 -321 NULL false 5
- 3 4 5 2 8 a true 5.5
- 7 2 2 6 7.9 b true 7
- 8 4 2 3 3 A false 8
- query IIIRRTB colnames
- SELECT * FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY avg(k) OVER w DESC, k
- ----
- k v w f d s b
- 8 4 2 3 3 A false
- 7 2 2 6 7.9 b true
- 3 4 5 2 8 a true
- 5 NULL 5 9.9 -321 NULL false
- 1 2 3 1 1 a true
- 6 2 3 4.4 4.4 b true
- query error window "w" is already defined
- SELECT avg(k) OVER w FROM kv WINDOW w AS (), w AS ()
- query error window "x" does not exist
- SELECT avg(k) OVER x FROM kv WINDOW w AS ()
- query error window "x" does not exist
- SELECT avg(k) OVER (x) FROM kv WINDOW w AS ()
- query error cannot override PARTITION BY clause of window "w"
- SELECT avg(k) OVER (w PARTITION BY v) FROM kv WINDOW w AS ()
- query error cannot override PARTITION BY clause of window "w"
- SELECT avg(k) OVER (w PARTITION BY v) FROM kv WINDOW w AS (PARTITION BY v)
- query error cannot override ORDER BY clause of window "w"
- SELECT avg(k) OVER (w ORDER BY v) FROM kv WINDOW w AS (ORDER BY v)
- query error column "a" does not exist
- SELECT avg(k) OVER (PARTITION BY a) FROM kv
- query error column "a" does not exist
- SELECT avg(k) OVER (ORDER BY a) FROM kv
- # TODO(justin): this should have pgcode 42803 but CBO currently doesn't get
- # it right.
- query error window functions are not allowed in aggregate
- SELECT avg(avg(k) OVER ()) FROM kv ORDER BY 1
- query R
- SELECT avg(avg(k)) OVER () FROM kv ORDER BY 1
- ----
- 5
- query RR
- SELECT avg(k) OVER (), avg(v) OVER () FROM kv ORDER BY 1
- ----
- 5 2.3333333333333333333
- 5 2.3333333333333333333
- 5 2.3333333333333333333
- 5 2.3333333333333333333
- 5 2.3333333333333333333
- 5 2.3333333333333333333
- query error OVER specified, but now\(\) is neither a window function nor an aggregate function
- SELECT now() OVER () FROM kv ORDER BY 1
- query error window function rank\(\) requires an OVER clause
- SELECT rank() FROM kv
- query error unknown signature: rank\(int\)
- SELECT rank(22) FROM kv
- query error window function calls cannot be nested
- SELECT avg(avg(k) OVER ()) OVER () FROM kv ORDER BY 1
- query error OVER specified, but round\(\) is neither a window function nor an aggregate function
- SELECT round(avg(k) OVER ()) OVER () FROM kv ORDER BY 1
- query R
- SELECT round(avg(k) OVER (PARTITION BY v ORDER BY w)) FROM kv ORDER BY 1
- ----
- 5
- 5
- 5
- 6
- 7
- 8
- query R
- SELECT avg(f) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 2.5
- 3
- 3.8
- 3.8
- 6
- 9.9
- query R
- SELECT avg(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- -321
- 3
- 4.4333333333333333333
- 4.4333333333333333333
- 5.5
- 7.9
- query R
- SELECT avg(d) OVER (PARTITION BY w ORDER BY v) FROM kv ORDER BY 1
- ----
- -321
- -156.5
- 2.7
- 2.7
- 5.45
- 7.9
- query R
- SELECT (avg(d) OVER (PARTITION BY v ORDER BY w) + avg(d) OVER (PARTITION BY v ORDER BY w)) FROM kv ORDER BY 1
- ----
- -642
- 6
- 8.8666666666666666666
- 8.8666666666666666666
- 11.0
- 15.8
- query R
- SELECT (avg(d) OVER (PARTITION BY v ORDER BY w) + avg(d) OVER (PARTITION BY w ORDER BY v)) FROM kv ORDER BY 1
- ----
- -642
- -151.0
- 7.1333333333333333333
- 7.1333333333333333333
- 8.45
- 15.8
- query R
- SELECT avg(d) OVER (PARTITION BY v) FROM kv WHERE FALSE ORDER BY 1
- ----
- query R
- SELECT avg(d) OVER (PARTITION BY v, v, v, v, v, v, v, v, v, v) FROM kv WHERE FALSE ORDER BY 1
- ----
- query R
- SELECT avg(d) OVER (PARTITION BY v, v, v, v, v, v, v, v, v, v) FROM kv WHERE k = 3 ORDER BY 1
- ----
- 8
- query IT
- SELECT k, concat_agg(s) OVER (PARTITION BY k ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 a
- 3 a
- 5 NULL
- 6 b
- 7 b
- 8 A
- query IT
- SELECT k, concat_agg(s) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 ba
- 3 Aa
- 5 NULL
- 6 bab
- 7 b
- 8 A
- query IB
- SELECT k, bool_and(b) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 true
- 3 false
- 5 false
- 6 true
- 7 true
- 8 false
- query IB
- SELECT k, bool_or(b) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 true
- 3 true
- 5 false
- 6 true
- 7 true
- 8 false
- query II
- SELECT k, count(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 3
- 3 2
- 5 1
- 6 3
- 7 1
- 8 1
- query II
- SELECT k, count(*) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 3
- 3 2
- 5 1
- 6 3
- 7 1
- 8 1
- query IR
- SELECT k, max(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 7.9
- 3 8
- 5 -321
- 6 7.9
- 7 7.9
- 8 3
- query IR
- SELECT k, min(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 -321
- 6 1
- 7 7.9
- 8 3
- query IR
- SELECT k, pow(max(d) OVER (PARTITION BY v), k::DECIMAL) FROM kv ORDER BY 1
- ----
- 1 7.9
- 3 512
- 5 -3408200705601
- 6 243087.455521
- 7 1920390.8986159
- 8 16777216
- query IR
- SELECT k, max(d) OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 1 7.9
- 3 8
- 5 -321
- 6 7.9
- 7 7.9
- 8 8
- query IR
- SELECT k, sum(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 13.3
- 3 11
- 5 -321
- 6 13.3
- 7 7.9
- 8 3
- query IR
- SELECT k, variance(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 11.903333333333333333
- 3 12.5
- 5 NULL
- 6 11.903333333333333333
- 7 NULL
- 8 NULL
- query IR
- SELECT k, stddev(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 3.4501207708330056852
- 3 3.5355339059327376220
- 5 NULL
- 6 3.4501207708330056852
- 7 NULL
- 8 NULL
- query IR
- SELECT k, stddev(d) OVER w FROM kv WINDOW w as (PARTITION BY v) ORDER BY variance(d) OVER w, k
- ----
- 5 NULL
- 1 3.4501207708330056852
- 6 3.4501207708330056852
- 7 3.4501207708330056852
- 3 3.5355339059327376220
- 8 3.5355339059327376220
- query IRIR
- SELECT * FROM (SELECT k, d, v, stddev(d) OVER (PARTITION BY v) FROM kv) sub ORDER BY variance(d) OVER (PARTITION BY v), k
- ----
- 5 -321 NULL NULL
- 1 1 2 3.4501207708330056852
- 6 4.4 2 3.4501207708330056852
- 7 7.9 2 3.4501207708330056852
- 3 8 4 3.5355339059327376220
- 8 3 4 3.5355339059327376220
- query IR
- SELECT k, max(stddev) OVER (ORDER BY d) FROM (SELECT k, d, stddev(d) OVER (PARTITION BY v) as stddev FROM kv) sub ORDER BY 2, k
- ----
- 5 NULL
- 1 3.4501207708330056852
- 3 3.5355339059327376220
- 6 3.5355339059327376220
- 7 3.5355339059327376220
- 8 3.5355339059327376220
- query IR
- SELECT k, max(stddev) OVER (ORDER BY d DESC) FROM (SELECT k, d, stddev(d) OVER (PARTITION BY v) as stddev FROM kv) sub ORDER BY 2, k
- ----
- 1 3.5355339059327376220
- 3 3.5355339059327376220
- 5 3.5355339059327376220
- 6 3.5355339059327376220
- 7 3.5355339059327376220
- 8 3.5355339059327376220
- query IRIII
- SELECT k, (rank() OVER wind + avg(w) OVER wind), w, (v + row_number() OVER wind), v FROM kv WINDOW wind AS (ORDER BY k) ORDER BY 1
- ----
- 1 4 3 3 2
- 3 6 5 6 4
- 5 7.3333333333333333333 5 NULL NULL
- 6 8 3 6 2
- 7 8.6 2 7 2
- 8 9.3333333333333333333 2 10 4
- query TIRRI
- SELECT s, w + k, (sum(w) OVER wind + avg(d) OVER wind), (min(w) OVER wind + d), v FROM kv WINDOW wind AS (ORDER BY w, k) ORDER BY k
- ----
- a 4 10.9666666666666666667 3 2
- a 8 19.86 10 4
- NULL 10 -29.45 -319 NULL
- b 9 14.075 6.4 2
- b 9 9.9 9.9 2
- A 10 9.45 5 4
- query IIII
- SELECT k, v + w, round(rank() OVER wind + lead(k, 3, v) OVER wind + lag(w, 1, 2) OVER wind + f::DECIMAL + avg(d) OVER wind)::INT, round(row_number() OVER wind::FLOAT + round(f) + dense_rank() OVER wind::FLOAT)::INT FROM kv WINDOW wind as (PARTITION BY v ORDER BY k) ORDER BY k
- ----
- 1 5 7 3
- 3 9 17 4
- 5 NULL NULL 12
- 6 5 14 8
- 7 4 18 12
- 8 6 20 7
- query II
- SELECT (rank() OVER wind + lead(k, 3, v) OVER wind + lag(w, 1, 2) OVER wind), (row_number() OVER wind + dense_rank() OVER wind) FROM kv WINDOW wind as (PARTITION BY v ORDER BY k) ORDER BY k
- ----
- 5 2
- 7 2
- NULL 2
- 7 4
- 8 6
- 11 4
- query RIR
- SELECT (round(avg(k) OVER w1 + sum(w) OVER w2) + row_number() OVER w2 + d + min(d) OVER w3 + f::DECIMAL) AS big_sum, v + w AS v_plus_w, (rank() OVER w3 + first_value(d) OVER w1 + nth_value(k, 2) OVER w1) AS small_sum FROM kv WINDOW w1 AS (PARTITION BY b ORDER BY k), w2 AS (PARTITION BY w ORDER BY k), w3 AS (PARTITION BY v ORDER BY k) ORDER BY k
- ----
- 8 5 NULL
- 26 9 5
- -615.1 NULL NULL
- 20.8 5 6
- 21.9 4 7
- 22 6 -311
- query RI
- SELECT round(row_number() OVER w1 + lead(k, v, w) OVER w2 + avg(k) OVER w1), (lag(k, 1) OVER w1 + v + rank() OVER w2 + min(k) OVER w1) FROM kv WINDOW w1 AS (PARTITION BY w ORDER BY k), w2 AS (PARTITION BY b ORDER BY k) ORDER BY k
- ----
- 8 NULL
- 9 NULL
- NULL NULL
- 9 7
- 10 NULL
- 12 20
- query R
- SELECT f::DECIMAL + round(max(k) * w * avg(d) OVER wind) + (lead(f, 2, 17::FLOAT) OVER wind::DECIMAL / d * row_number() OVER wind) FROM kv GROUP BY k, w, f, d WINDOW wind AS (ORDER BY k) ORDER BY k
- ----
- 13.9
- 71.10
- -2590.156074766355140186916
- -1376.87272727272727272728
- -822.2405063291139240505
- -753.9999999999999999998
- query R
- SELECT round(max(w) * w * avg(w) OVER wind) + (lead(w, 2, 17) OVER wind::DECIMAL / w * row_number() OVER wind) FROM kv GROUP BY w WINDOW wind AS (PARTITION BY w) ORDER BY 1
- ----
- 16.5
- 32.6666666666666666667
- 128.4
- query IRRIRIR
- SELECT k, avg(d) OVER w1, avg(d) OVER w2, row_number() OVER w2, sum(f) OVER w1, row_number() OVER w1, sum(f) OVER w2 FROM kv WINDOW w1 AS (ORDER BY k), w2 AS (ORDER BY w, k) ORDER BY k
- ----
- 1 1 3.9666666666666666667 3 1 1 10
- 3 4.5 4.86 5 3 2 16.4
- 5 -104 -49.45 6 12.9 3 26.3
- 6 -76.9 4.075 4 17.3 4 14.4
- 7 -59.94 7.9 1 23.3 5 6
- 8 -49.45 5.45 2 26.3 6 9
- query R
- SELECT round((avg(d) OVER wind) * max(k) + (lag(d, 1, 42.0) OVER wind) * max(d)) FROM kv GROUP BY d, k WINDOW wind AS (ORDER BY k) ORDER BY k
- ----
- 43
- 22
- -3088
- -1874
- -385
- -372
- query RR
- SELECT avg(k) OVER w, avg(k) OVER w + 1 FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY k
- ----
- 4.6666666666666666667 5.6666666666666666667
- 5.5 6.5
- 5 6
- 4.6666666666666666667 5.6666666666666666667
- 7 8
- 8 9
- statement OK
- INSERT INTO kv VALUES
- (9, 2, 9, .1, DEFAULT, DEFAULT, DEFAULT),
- (10, 4, 9, .2, DEFAULT, DEFAULT, DEFAULT),
- (11, NULL, 9, .3, DEFAULT, DEFAULT, DEFAULT)
- query II
- SELECT k, row_number() OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 2
- 5 3
- 6 4
- 7 5
- 8 6
- 9 7
- 10 8
- 11 9
- query III
- SELECT k, v, row_number() OVER (PARTITION BY v ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 2
- 7 2 3
- 8 4 2
- 9 2 4
- 10 4 3
- 11 NULL 2
- query IIII
- SELECT k, v, w, row_number() OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 1
- 6 2 3 3
- 7 2 2 1
- 8 4 2 1
- 9 2 9 4
- 10 4 9 3
- 11 NULL 9 2
- query IIII
- SELECT k, v, w, v - w + 2 + row_number() OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 2 3 3
- 3 4 5 3
- 5 NULL 5 NULL
- 6 2 3 4
- 7 2 2 3
- 8 4 2 5
- 9 2 9 -1
- 10 4 9 0
- 11 NULL 9 NULL
- query II
- SELECT k, row_number() OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query IIII
- SELECT k, v, w, v - w + 2 + row_number() OVER (PARTITION BY v, k ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 NULL
- 6 2 3 2
- 7 2 2 3
- 8 4 2 5
- 9 2 9 -4
- 10 4 9 -2
- 11 NULL 9 NULL
- query RIII
- SELECT avg(k), max(v), min(w), 2 + row_number() OVER () FROM kv ORDER BY 1
- ----
- 6.6666666666666666667 4 2 3
- query II
- SELECT k, rank() OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query III
- SELECT k, v, rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 1
- 7 2 1
- 8 4 1
- 9 2 1
- 10 4 1
- 11 NULL 1
- query IIII
- SELECT k, v, w, rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 1
- 6 2 3 2
- 7 2 2 1
- 8 4 2 1
- 9 2 9 4
- 10 4 9 3
- 11 NULL 9 2
- query IRI
- SELECT k, (rank() OVER w + avg(w) OVER w), k FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
- ----
- 1 4.6666666666666666667 1
- 3 5.5 3
- 5 6 5
- 6 4.6666666666666666667 6
- 7 3 7
- 8 3 8
- 9 8.25 9
- 10 8.3333333333333333333 10
- 11 9 11
- query IRI
- SELECT k, (avg(w) OVER w + rank() OVER w), k FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
- ----
- 1 4.6666666666666666667 1
- 3 5.5 3
- 5 6 5
- 6 4.6666666666666666667 6
- 7 3 7
- 8 3 8
- 9 8.25 9
- 10 8.3333333333333333333 10
- 11 9 11
- query II
- SELECT k, dense_rank() OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query III
- SELECT k, v, dense_rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 1
- 7 2 1
- 8 4 1
- 9 2 1
- 10 4 1
- 11 NULL 1
- query IIII
- SELECT k, v, w, dense_rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 1
- 6 2 3 2
- 7 2 2 1
- 8 4 2 1
- 9 2 9 3
- 10 4 9 3
- 11 NULL 9 2
- query IR
- SELECT k, percent_rank() OVER () FROM kv ORDER BY 1
- ----
- 1 0
- 3 0
- 5 0
- 6 0
- 7 0
- 8 0
- 9 0
- 10 0
- 11 0
- query IIR
- SELECT k, v, percent_rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 1 2 0
- 3 4 0
- 5 NULL 0
- 6 2 0
- 7 2 0
- 8 4 0
- 9 2 0
- 10 4 0
- 11 NULL 0
- query IIIR
- SELECT k, v, w, percent_rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 0.333333333333333
- 3 4 5 0.5
- 5 NULL 5 0
- 6 2 3 0.333333333333333
- 7 2 2 0
- 8 4 2 0
- 9 2 9 1
- 10 4 9 1
- 11 NULL 9 1
- query IR
- SELECT k, cume_dist() OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query IIR
- SELECT k, v, cume_dist() OVER (PARTITION BY v) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 1
- 7 2 1
- 8 4 1
- 9 2 1
- 10 4 1
- 11 NULL 1
- query IIIR
- SELECT k, v, w, cume_dist() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 0.75
- 3 4 5 0.666666666666667
- 5 NULL 5 0.5
- 6 2 3 0.75
- 7 2 2 0.25
- 8 4 2 0.333333333333333
- 9 2 9 1
- 10 4 9 1
- 11 NULL 9 1
- query error argument of ntile\(\) must be greater than zero
- SELECT k, ntile(-10) OVER () FROM kv ORDER BY 1
- query error argument of ntile\(\) must be greater than zero
- SELECT k, ntile(0) OVER () FROM kv ORDER BY 1
- query II
- SELECT k, ntile(NULL::INT) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, ntile(1) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query II
- SELECT k, ntile(4) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 2
- 7 2
- 8 3
- 9 3
- 10 4
- 11 4
- query II
- SELECT k, ntile(20) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 2
- 5 3
- 6 4
- 7 5
- 8 6
- 9 7
- 10 8
- 11 9
- # The value of 'w' in the first row will be 3.
- query II
- SELECT k, ntile(w) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 2
- 7 2
- 8 2
- 9 3
- 10 3
- 11 3
- query III
- SELECT k, v, ntile(3) OVER (PARTITION BY v ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 1
- 7 2 2
- 8 4 2
- 9 2 3
- 10 4 3
- 11 NULL 2
- query IIII
- SELECT k, v, w, ntile(6) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 1
- 6 2 3 3
- 7 2 2 1
- 8 4 2 1
- 9 2 9 4
- 10 4 9 3
- 11 NULL 9 2
- query II
- SELECT k, ntile(w) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query III
- SELECT k, v, ntile(3) OVER (PARTITION BY v, k) FROM kv ORDER BY 1
- ----
- 1 2 1
- 3 4 1
- 5 NULL 1
- 6 2 1
- 7 2 1
- 8 4 1
- 9 2 1
- 10 4 1
- 11 NULL 1
- query IIII
- SELECT k, v, w, ntile(6) OVER (PARTITION BY v, k ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 1
- 3 4 5 1
- 5 NULL 5 1
- 6 2 3 1
- 7 2 2 1
- 8 4 2 1
- 9 2 9 1
- 10 4 9 1
- 11 NULL 9 1
- query II
- SELECT k, lag(9) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 9
- 5 9
- 6 9
- 7 9
- 8 9
- 9 9
- 10 9
- 11 9
- query II
- SELECT k, lead(9) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 9
- 3 9
- 5 9
- 6 9
- 7 9
- 8 9
- 9 9
- 10 9
- 11 NULL
- query II
- SELECT k, lag(k) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 1
- 5 3
- 6 5
- 7 6
- 8 7
- 9 8
- 10 9
- 11 10
- query II
- SELECT k, lag(k) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 7
- 3 8
- 5 NULL
- 6 1
- 7 NULL
- 8 NULL
- 9 6
- 10 3
- 11 5
- query II
- SELECT k, lead(k) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 3
- 3 5
- 5 6
- 6 7
- 7 8
- 8 9
- 9 10
- 10 11
- 11 NULL
- query II
- SELECT k, lead(k) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 6
- 3 10
- 5 11
- 6 9
- 7 1
- 8 3
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, 3) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 1
- 7 3
- 8 5
- 9 6
- 10 7
- 11 8
- query II
- SELECT k, lag(k, 3) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 7
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, 3) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 6
- 3 7
- 5 8
- 6 9
- 7 10
- 8 11
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, 3) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 9
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, -5) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 8
- 3 9
- 5 10
- 6 11
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, -5) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 1
- 9 3
- 10 5
- 11 6
- query II
- SELECT k, lag(k, 0) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lead(k, 0) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lag(k, NULL::INT) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, NULL::INT) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, w) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 1
- 7 5
- 8 6
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, w) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, w) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 6
- 3 9
- 5 10
- 6 9
- 7 9
- 8 10
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, w) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 6
- 8 10
- 9 NULL
- 10 NULL
- 11 NULL
- query error unknown signature: lag\(int, int, string\)
- SELECT k, lag(k, 1, 'FOO') OVER () FROM kv ORDER BY 1
- query error unknown signature: lead\(int, int, string\)
- SELECT k, lead(k, 1, 'FOO') OVER () FROM kv ORDER BY 1
- query error unknown signature: lag\(int, int, string\)
- SELECT k, lag(k, 1, s) OVER () FROM kv ORDER BY 1
- query error unknown signature: lead\(int, int, string\)
- SELECT k, lead(k, 1, s) OVER () FROM kv ORDER BY 1
- query II
- SELECT k, lag(k, 3, -99) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 -99
- 3 -99
- 5 -99
- 6 1
- 7 3
- 8 5
- 9 6
- 10 7
- 11 8
- query II
- SELECT k, lead(k, 3, -99) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 6
- 3 7
- 5 8
- 6 9
- 7 10
- 8 11
- 9 -99
- 10 -99
- 11 -99
- query II
- SELECT k, lag(k, 3, v) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 1
- 7 3
- 8 5
- 9 6
- 10 7
- 11 8
- query II
- SELECT k, lead(k, 3, v) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 6
- 3 7
- 5 8
- 6 9
- 7 10
- 8 11
- 9 2
- 10 4
- 11 NULL
- query II
- SELECT k, (lag(k, 5, w) OVER w + lead(k, 3, v) OVER w) FROM kv WINDOW w AS (ORDER BY k) ORDER BY 1
- ----
- 1 9
- 3 12
- 5 13
- 6 12
- 7 12
- 8 12
- 9 5
- 10 9
- 11 NULL
- query II
- SELECT k, lag(k) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, 0) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lead(k, 0) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lag(k, -5) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lead(k, -5) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, lag(k, w - w) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lead(k, w - w) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 1
- 3 3
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- query II
- SELECT k, lag(k, 3, -99) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 -99
- 3 -99
- 5 -99
- 6 -99
- 7 -99
- 8 -99
- 9 -99
- 10 -99
- 11 -99
- query II
- SELECT k, lead(k, 3, -99) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 -99
- 3 -99
- 5 -99
- 6 -99
- 7 -99
- 8 -99
- 9 -99
- 10 -99
- 11 -99
- query II
- SELECT k, lag(k, 3, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query II
- SELECT k, lead(k, 3, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query II
- SELECT k, first_value(NULL::INT) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, first_value(1) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query IR
- SELECT k, first_value(199.9 * 23.3) OVER () FROM kv ORDER BY 1
- ----
- 1 4657.67
- 3 4657.67
- 5 4657.67
- 6 4657.67
- 7 4657.67
- 8 4657.67
- 9 4657.67
- 10 4657.67
- 11 4657.67
- query II
- SELECT k, first_value(v) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 2
- 5 2
- 6 2
- 7 2
- 8 2
- 9 2
- 10 2
- 11 2
- query IIII
- SELECT k, v, w, first_value(w) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 2
- 3 4 5 2
- 5 NULL 5 5
- 6 2 3 2
- 7 2 2 2
- 8 4 2 2
- 9 2 9 2
- 10 4 9 2
- 11 NULL 9 5
- query IIII
- SELECT k, v, w, first_value(w) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
- ----
- 1 2 3 9
- 3 4 5 9
- 5 NULL 5 9
- 6 2 3 9
- 7 2 2 9
- 8 4 2 9
- 9 2 9 9
- 10 4 9 9
- 11 NULL 9 9
- query II
- SELECT k, first_value(v) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query II
- SELECT k, last_value(NULL::INT) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, last_value(1) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query IR
- SELECT k, last_value(199.9 * 23.3) OVER () FROM kv ORDER BY 1
- ----
- 1 4657.67
- 3 4657.67
- 5 4657.67
- 6 4657.67
- 7 4657.67
- 8 4657.67
- 9 4657.67
- 10 4657.67
- 11 4657.67
- query II
- SELECT k, last_value(v) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query IIII
- SELECT k, v, w, last_value(w) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 3
- 3 4 5 5
- 5 NULL 5 5
- 6 2 3 3
- 7 2 2 2
- 8 4 2 2
- 9 2 9 9
- 10 4 9 9
- 11 NULL 9 9
- query IIII
- SELECT k, v, w, last_value(w) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
- ----
- 1 2 3 3
- 3 4 5 5
- 5 NULL 5 5
- 6 2 3 3
- 7 2 2 2
- 8 4 2 2
- 9 2 9 9
- 10 4 9 9
- 11 NULL 9 9
- query II
- SELECT k, last_value(v) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query error unknown signature: nth_value\(int, string\)
- SELECT k, nth_value(v, 'FOO') OVER () FROM kv ORDER BY 1
- query error argument of nth_value\(\) must be greater than zero
- SELECT k, nth_value(v, -99) OVER () FROM kv ORDER BY 1
- query error argument of nth_value\(\) must be greater than zero
- SELECT k, nth_value(v, 0) OVER () FROM kv ORDER BY 1
- query II
- SELECT k, nth_value(NULL::INT, 5) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, nth_value(1, 3) OVER () FROM kv ORDER BY 1
- ----
- 1 1
- 3 1
- 5 1
- 6 1
- 7 1
- 8 1
- 9 1
- 10 1
- 11 1
- query II
- SELECT k, nth_value(1, 33) OVER () FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query IR
- SELECT k, nth_value(199.9 * 23.3, 7) OVER () FROM kv ORDER BY 1
- ----
- 1 4657.67
- 3 4657.67
- 5 4657.67
- 6 4657.67
- 7 4657.67
- 8 4657.67
- 9 4657.67
- 10 4657.67
- 11 4657.67
- query II
- SELECT k, nth_value(v, 8) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 4
- 11 4
- query IIII
- SELECT k, v, w, nth_value(w, 2) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
- ----
- 1 2 3 3
- 3 4 5 5
- 5 NULL 5 NULL
- 6 2 3 3
- 7 2 2 NULL
- 8 4 2 NULL
- 9 2 9 3
- 10 4 9 5
- 11 NULL 9 9
- query IIII
- SELECT k, v, w, nth_value(w, 2) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
- ----
- 1 2 3 3
- 3 4 5 5
- 5 NULL 5 5
- 6 2 3 3
- 7 2 2 3
- 8 4 2 5
- 9 2 9 NULL
- 10 4 9 NULL
- 11 NULL 9 NULL
- query II
- SELECT k, nth_value(v, k) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- query II
- SELECT k, nth_value(v, v) OVER (ORDER BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 4
- 7 4
- 8 2
- 9 4
- 10 2
- 11 NULL
- query II
- SELECT k, nth_value(v, 1) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 2
- 3 4
- 5 NULL
- 6 2
- 7 2
- 8 4
- 9 2
- 10 4
- 11 NULL
- query II
- SELECT k, nth_value(v, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
- ----
- 1 NULL
- 3 NULL
- 5 NULL
- 6 NULL
- 7 NULL
- 8 NULL
- 9 NULL
- 10 NULL
- 11 NULL
- statement ok
- INSERT INTO kv VALUES (12, -1, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
- query error argument of nth_value\(\) must be greater than zero
- SELECT k, nth_value(v, v) OVER () FROM kv ORDER BY 1
- statement ok
- DELETE FROM kv WHERE k = 12
- query error FILTER specified, but rank is not an aggregate function
- SELECT k, rank() FILTER (WHERE k=1) OVER () FROM kv
- # Issue materialize#14606: correctly handle aggregation functions above the windowing level
- query I
- SELECT max(i) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
- ----
- 1
- query R
- SELECT (1/j) * max(i) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
- ----
- 0.5
- query R
- SELECT max(i) * (1/j) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
- ----
- 0.5
- # regression test for materialize#23798 until materialize#10495 is fixed.
- statement error function reserved for internal use
- SELECT final_variance(1.2, 1.2, 123) OVER (PARTITION BY k) FROM kv
- statement ok
- CREATE TABLE products (
- group_id serial PRIMARY KEY,
- group_name VARCHAR (255) NOT NULL,
- product_name VARCHAR (255) NOT NULL,
- price DECIMAL (11, 2),
- priceInt INT,
- priceFloat FLOAT,
- pDate DATE,
- pTime TIME,
- pTimestamp TIMESTAMP,
- pTimestampTZ TIMESTAMPTZ,
- pInterval INTERVAL
- )
- statement ok
- INSERT INTO products (group_name, product_name, price, priceInt, priceFloat, pDate, pTime, pTimestamp, pTimestampTZ, pInterval) VALUES
- ('Smartphone', 'Microsoft Lumia', 200, 200, 200, '2018-07-30', TIME '01:23:45', TIMESTAMP '2018-07-30 01:23:45', TIMESTAMPTZ '2018-07-30 01:23:45', INTERVAL '1 months 2 days 3 hours 4 minutes 5 seconds'),
- ('Smartphone', 'HTC One', 400, 400, 400, '2018-07-31', TIME '12:34:56', TIMESTAMP '2018-07-31 12:34:56', TIMESTAMPTZ '2018-07-31 12:34:56', INTERVAL '1 days 2 hours 3 minutes 4 seconds'),
- ('Smartphone', 'Nexus', 500, 500, 500, '2018-07-30', TIME '11:23:45', TIMESTAMP '2018-07-30 11:23:45', TIMESTAMPTZ '2018-07-30 11:23:45', INTERVAL '1 hours 2 minutes 3 seconds'),
- ('Smartphone', 'iPhone', 900, 900, 900, '2018-07-31', TIME '07:34:56', TIMESTAMP '2018-07-31 07:34:56', TIMESTAMPTZ '2018-07-31 07:34:56', INTERVAL '1 minutes 2 seconds'),
- ('Laptop', 'HP Elite', 1200, 1200, 1200, '2018-07-30', TIME '01:23:45', TIMESTAMP '2018-07-30 01:23:45', TIMESTAMPTZ '2018-07-30 01:23:45', INTERVAL '1 months 2 days 3 hours 4 minutes 5 seconds'),
- ('Laptop', 'Lenovo Thinkpad', 700, 700, 700, '2018-07-31', TIME '12:34:56', TIMESTAMP '2018-07-31 12:34:56', TIMESTAMPTZ '2018-07-31 12:34:56', INTERVAL '1 days 2 hours 3 minutes 4 seconds'),
- ('Laptop', 'Sony VAIO', 700, 700, 700, '2018-07-30', TIME '11:23:45', TIMESTAMP '2018-07-30 11:23:45', TIMESTAMPTZ '2018-07-30 11:23:45', INTERVAL '1 hours 2 minutes 3 seconds'),
- ('Laptop', 'Dell', 800, 800, 800, '2018-07-31', TIME '07:34:56', TIMESTAMP '2018-07-31 07:34:56', TIMESTAMPTZ '2018-07-31 07:34:56', INTERVAL '1 minutes 2 seconds'),
- ('Tablet', 'iPad', 700, 700, 700, '2018-07-30', TIME '01:23:45', TIMESTAMP '2018-07-30 01:23:45', TIMESTAMPTZ '2018-07-30 01:23:45', INTERVAL '1 months 2 days 3 hours 4 minutes 5 seconds'),
- ('Tablet', 'Kindle Fire', 150, 150, 150, '2018-07-31', TIME '12:34:56', TIMESTAMP '2018-07-31 12:34:56', TIMESTAMPTZ '2018-07-31 12:34:56', INTERVAL '1 days 2 hours 3 minutes 4 seconds'),
- ('Tablet', 'Samsung', 200, 200, 200, '2018-07-30', TIME '11:23:45', TIMESTAMP '2018-07-30 11:23:45', TIMESTAMPTZ '2018-07-30 11:23:45', INTERVAL '1 hours 2 minutes 3 seconds')
- statement error cannot copy window "w" because it has a frame clause
- SELECT avg(price) OVER (w) FROM products WINDOW w AS (ROWS 1 PRECEDING)
- statement error cannot copy window "w" because it has a frame clause
- SELECT avg(price) OVER (w ORDER BY price) FROM products WINDOW w AS (ROWS 1 PRECEDING)
- statement error frame starting offset must not be null
- SELECT avg(price) OVER (ROWS NULL PRECEDING) FROM products
- statement error frame starting offset must not be null
- SELECT avg(price) OVER (ROWS BETWEEN NULL PRECEDING AND 1 FOLLOWING) FROM products
- statement error frame starting offset must not be negative
- SELECT price, avg(price) OVER (PARTITION BY price ROWS -1 PRECEDING) AS avg_price FROM products
- statement error frame starting offset must not be negative
- SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price ROWS -1 PRECEDING)
- statement error frame ending offset must not be null
- SELECT avg(price) OVER (ROWS BETWEEN 1 PRECEDING AND NULL FOLLOWING) FROM products
- statement error frame ending offset must not be negative
- SELECT price, avg(price) OVER (PARTITION BY price ROWS BETWEEN 1 FOLLOWING AND -1 FOLLOWING) AS avg_price FROM products
- statement error frame ending offset must not be negative
- SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price ROWS BETWEEN 1 FOLLOWING AND -1 FOLLOWING)
- statement error frame ending offset must not be negative
- SELECT product_name, price, min(price) OVER (PARTITION BY group_name ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS min_over_three, max(price) OVER (PARTITION BY group_name ROWS BETWEEN UNBOUNDED PRECEDING AND -1 FOLLOWING) AS max_over_partition FROM products ORDER BY group_id
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name ROWS 1.5 PRECEDING) AS avg_price FROM products
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name ROWS 1.5 PRECEDING)
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name ROWS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING) AS avg_price FROM products
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name ROWS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING)
- statement error incompatible window frame end type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name ROWS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING) AS avg_price FROM products
- statement error incompatible window frame end type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name ROWS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING)
- query TRT
- SELECT product_name, price, first_value(product_name) OVER w AS first FROM products WHERE price = 200 OR price = 700 WINDOW w as (PARTITION BY price ORDER BY product_name RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ORDER BY price, product_name
- ----
- Microsoft Lumia 200.00 Microsoft Lumia
- Samsung 200.00 Microsoft Lumia
- Lenovo Thinkpad 700.00 Lenovo Thinkpad
- Sony VAIO 700.00 Lenovo Thinkpad
- iPad 700.00 Lenovo Thinkpad
- query TRT
- SELECT product_name, price, last_value(product_name) OVER w AS last FROM products WHERE price = 200 OR price = 700 WINDOW w as (PARTITION BY price ORDER BY product_name RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) ORDER BY price, product_name
- ----
- Microsoft Lumia 200.00 Samsung
- Samsung 200.00 Samsung
- Lenovo Thinkpad 700.00 iPad
- Sony VAIO 700.00 iPad
- iPad 700.00 iPad
- query TRT
- SELECT product_name, price, nth_value(product_name, 2) OVER w AS second FROM products WHERE price = 200 OR price = 700 WINDOW w as (PARTITION BY price ORDER BY product_name RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) ORDER BY price, product_name
- ----
- Microsoft Lumia 200.00 Samsung
- Samsung 200.00 NULL
- Lenovo Thinkpad 700.00 Sony VAIO
- Sony VAIO 700.00 iPad
- iPad 700.00 NULL
- query TTRR
- SELECT product_name, group_name, price, avg(price) OVER (PARTITION BY group_name ORDER BY price, product_name ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS avg_of_three FROM products ORDER BY group_name, price, product_name
- ----
- Lenovo Thinkpad Laptop 700.00 700.00
- Sony VAIO Laptop 700.00 733.33333333333333333
- Dell Laptop 800.00 900.00
- HP Elite Laptop 1200.00 1000.00
- Microsoft Lumia Smartphone 200.00 300.00
- HTC One Smartphone 400.00 366.66666666666666667
- Nexus Smartphone 500.00 600.00
- iPhone Smartphone 900.00 700.00
- Kindle Fire Tablet 150.00 175.00
- Samsung Tablet 200.00 350.00
- iPad Tablet 700.00 450.00
- query TTRR
- SELECT product_name, group_name, price, avg(priceFloat) OVER (PARTITION BY group_name ORDER BY price, product_name ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS avg_of_three_floats FROM products ORDER BY group_name, price, product_name
- ----
- Lenovo Thinkpad Laptop 700.00 700
- Sony VAIO Laptop 700.00 733.333333333333
- Dell Laptop 800.00 900
- HP Elite Laptop 1200.00 1000
- Microsoft Lumia Smartphone 200.00 300
- HTC One Smartphone 400.00 366.666666666667
- Nexus Smartphone 500.00 600
- iPhone Smartphone 900.00 700
- Kindle Fire Tablet 150.00 175
- Samsung Tablet 200.00 350
- iPad Tablet 700.00 450
- query TTRR
- SELECT product_name, group_name, price, avg(priceInt) OVER (PARTITION BY group_name ORDER BY price, product_name ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS avg_of_three_ints FROM products ORDER BY group_name, price, product_name
- ----
- Lenovo Thinkpad Laptop 700.00 700
- Sony VAIO Laptop 700.00 733.33333333333333333
- Dell Laptop 800.00 900
- HP Elite Laptop 1200.00 1000
- Microsoft Lumia Smartphone 200.00 300
- HTC One Smartphone 400.00 366.66666666666666667
- Nexus Smartphone 500.00 600
- iPhone Smartphone 900.00 700
- Kindle Fire Tablet 150.00 175
- Samsung Tablet 200.00 350
- iPad Tablet 700.00 450
- query TTRR
- SELECT group_name, product_name, price, avg(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS (SELECT count(*) FROM PRODUCTS WHERE price = 200) PRECEDING) AS running_avg_of_three FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 200.00
- Smartphone HTC One 400.00 300.00
- Smartphone Nexus 500.00 366.66666666666666667
- Smartphone iPhone 900.00 600.00
- Laptop HP Elite 1200.00 1200.00
- Laptop Lenovo Thinkpad 700.00 950.00
- Laptop Sony VAIO 700.00 866.66666666666666667
- Laptop Dell 800.00 733.33333333333333333
- Tablet iPad 700.00 700.00
- Tablet Kindle Fire 150.00 425.00
- Tablet Samsung 200.00 350.00
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS 2 PRECEDING) AS running_sum FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 200.00
- Smartphone HTC One 400.00 600.00
- Smartphone Nexus 500.00 1100.00
- Smartphone iPhone 900.00 1800.00
- Laptop HP Elite 1200.00 1200.00
- Laptop Lenovo Thinkpad 700.00 1900.00
- Laptop Sony VAIO 700.00 2600.00
- Laptop Dell 800.00 2200.00
- Tablet iPad 700.00 700.00
- Tablet Kindle Fire 150.00 850.00
- Tablet Samsung 200.00 1050.00
- query TTRT
- SELECT group_name, product_name, price, array_agg(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) AS array_agg_price FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 {200.00,400.00,500.00}
- Smartphone HTC One 400.00 {200.00,400.00,500.00,900.00}
- Smartphone Nexus 500.00 {400.00,500.00,900.00}
- Smartphone iPhone 900.00 {500.00,900.00}
- Laptop HP Elite 1200.00 {1200.00,700.00,700.00}
- Laptop Lenovo Thinkpad 700.00 {1200.00,700.00,700.00,800.00}
- Laptop Sony VAIO 700.00 {700.00,700.00,800.00}
- Laptop Dell 800.00 {700.00,800.00}
- Tablet iPad 700.00 {700.00,150.00,200.00}
- Tablet Kindle Fire 150.00 {700.00,150.00,200.00}
- Tablet Samsung 200.00 {150.00,200.00}
- query TTRR
- SELECT group_name, product_name, price, avg(price) OVER (PARTITION BY group_name RANGE UNBOUNDED PRECEDING) AS avg_price FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 500.00
- Smartphone HTC One 400.00 500.00
- Smartphone Nexus 500.00 500.00
- Smartphone iPhone 900.00 500.00
- Laptop HP Elite 1200.00 850.00
- Laptop Lenovo Thinkpad 700.00 850.00
- Laptop Sony VAIO 700.00 850.00
- Laptop Dell 800.00 850.00
- Tablet iPad 700.00 350.00
- Tablet Kindle Fire 150.00 350.00
- Tablet Samsung 200.00 350.00
- query TTRT
- SELECT group_name, product_name, price, min(price) OVER (PARTITION BY group_name ROWS BETWEEN 1 PRECEDING AND 2 PRECEDING) AS min_over_empty_frame FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 NULL
- Smartphone HTC One 400.00 NULL
- Smartphone Nexus 500.00 NULL
- Smartphone iPhone 900.00 NULL
- Laptop HP Elite 1200.00 NULL
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Laptop Dell 800.00 NULL
- Tablet iPad 700.00 NULL
- Tablet Kindle Fire 150.00 NULL
- Tablet Samsung 200.00 NULL
- query TRRR
- SELECT product_name, price, min(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS min_over_three, max(price) OVER (PARTITION BY group_name ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS max_over_partition FROM products ORDER BY group_id
- ----
- Microsoft Lumia 200.00 200.00 900.00
- HTC One 400.00 200.00 900.00
- Nexus 500.00 400.00 900.00
- iPhone 900.00 500.00 900.00
- HP Elite 1200.00 700.00 1200.00
- Lenovo Thinkpad 700.00 700.00 1200.00
- Sony VAIO 700.00 700.00 1200.00
- Dell 800.00 700.00 1200.00
- iPad 700.00 150.00 700.00
- Kindle Fire 150.00 150.00 700.00
- Samsung 200.00 150.00 700.00
- query TTRT
- SELECT group_name, product_name, price, min(price) OVER (PARTITION BY group_name ROWS CURRENT ROW) AS min_over_single_row FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 200.00
- Smartphone HTC One 400.00 400.00
- Smartphone Nexus 500.00 500.00
- Smartphone iPhone 900.00 900.00
- Laptop HP Elite 1200.00 1200.00
- Laptop Lenovo Thinkpad 700.00 700.00
- Laptop Sony VAIO 700.00 700.00
- Laptop Dell 800.00 800.00
- Tablet iPad 700.00 700.00
- Tablet Kindle Fire 150.00 150.00
- Tablet Samsung 200.00 200.00
- query TTRR
- SELECT group_name, product_name, price, avg(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) AS running_avg FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 600.00
- Smartphone HTC One 400.00 700.00
- Smartphone Nexus 500.00 900.00
- Smartphone iPhone 900.00 NULL
- Laptop HP Elite 1200.00 733.33333333333333333
- Laptop Lenovo Thinkpad 700.00 750.00
- Laptop Sony VAIO 700.00 800.00
- Laptop Dell 800.00 NULL
- Tablet iPad 700.00 175.00
- Tablet Kindle Fire 150.00 200.00
- Tablet Samsung 200.00 NULL
- query TRRRRR
- SELECT product_name, price, min(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS UNBOUNDED PRECEDING), max(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING), sum(price) OVER (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN 1 PRECEDING AND UNBOUNDED FOLLOWING), avg(price) OVER (PARTITION BY group_name ROWS CURRENT ROW) FROM products ORDER BY group_id
- ----
- Microsoft Lumia 200.00 200.00 400.00 2000.00 200.00
- HTC One 400.00 200.00 500.00 2000.00 400.00
- Nexus 500.00 200.00 900.00 1800.00 500.00
- iPhone 900.00 200.00 900.00 1400.00 900.00
- HP Elite 1200.00 1200.00 1200.00 3400.00 1200.00
- Lenovo Thinkpad 700.00 700.00 1200.00 3400.00 700.00
- Sony VAIO 700.00 700.00 1200.00 2200.00 700.00
- Dell 800.00 700.00 1200.00 1500.00 800.00
- iPad 700.00 700.00 700.00 1050.00 700.00
- Kindle Fire 150.00 150.00 700.00 1050.00 150.00
- Samsung 200.00 150.00 700.00 350.00 200.00
- query RRR
- SELECT avg(price) OVER w1, avg(price) OVER w2, avg(price) OVER w1 FROM products WINDOW w1 AS (PARTITION BY group_name ORDER BY group_id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING), w2 AS (ORDER BY group_id ROWS 1 PRECEDING) ORDER BY group_id
- ----
- 300.00 200.00 300.00
- 366.66666666666666667 300.00 366.66666666666666667
- 600.00 450.00 600.00
- 700.00 700.00 700.00
- 950.00 1050.00 950.00
- 866.66666666666666667 950.00 866.66666666666666667
- 733.33333333333333333 700.00 733.33333333333333333
- 750.00 750.00 750.00
- 425.00 750.00 425.00
- 350.00 425.00 350.00
- 175.00 175.00 175.00
- # In the following 4 tests, since ORDER BY is omitted, all rows are peers, so frame includes all the rows for every row.
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (RANGE CURRENT ROW) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 6450.00
- Smartphone HTC One 400.00 6450.00
- Smartphone Nexus 500.00 6450.00
- Smartphone iPhone 900.00 6450.00
- Laptop HP Elite 1200.00 6450.00
- Laptop Lenovo Thinkpad 700.00 6450.00
- Laptop Sony VAIO 700.00 6450.00
- Laptop Dell 800.00 6450.00
- Tablet iPad 700.00 6450.00
- Tablet Kindle Fire 150.00 6450.00
- Tablet Samsung 200.00 6450.00
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 6450.00
- Smartphone HTC One 400.00 6450.00
- Smartphone Nexus 500.00 6450.00
- Smartphone iPhone 900.00 6450.00
- Laptop HP Elite 1200.00 6450.00
- Laptop Lenovo Thinkpad 700.00 6450.00
- Laptop Sony VAIO 700.00 6450.00
- Laptop Dell 800.00 6450.00
- Tablet iPad 700.00 6450.00
- Tablet Kindle Fire 150.00 6450.00
- Tablet Samsung 200.00 6450.00
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN CURRENT ROW AND CURRENT ROW) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 6450.00
- Smartphone HTC One 400.00 6450.00
- Smartphone Nexus 500.00 6450.00
- Smartphone iPhone 900.00 6450.00
- Laptop HP Elite 1200.00 6450.00
- Laptop Lenovo Thinkpad 700.00 6450.00
- Laptop Sony VAIO 700.00 6450.00
- Laptop Dell 800.00 6450.00
- Tablet iPad 700.00 6450.00
- Tablet Kindle Fire 150.00 6450.00
- Tablet Samsung 200.00 6450.00
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 6450.00
- Smartphone HTC One 400.00 6450.00
- Smartphone Nexus 500.00 6450.00
- Smartphone iPhone 900.00 6450.00
- Laptop HP Elite 1200.00 6450.00
- Laptop Lenovo Thinkpad 700.00 6450.00
- Laptop Sony VAIO 700.00 6450.00
- Laptop Dell 800.00 6450.00
- Tablet iPad 700.00 6450.00
- Tablet Kindle Fire 150.00 6450.00
- Tablet Samsung 200.00 6450.00
- statement error aggregate functions are not allowed in FILTER
- SELECT count(*) FILTER (WHERE count(*) > 5) OVER () FROM products
- statement error window functions are not allowed in FILTER
- SELECT count(*) FILTER (WHERE count(*) OVER () > 5) OVER () FROM products
- statement error incompatible FILTER expression type: int
- SELECT count(*) FILTER (WHERE 1) OVER () FROM products
- statement error syntax error at or near "filter"
- SELECT price FILTER (WHERE price=1) OVER () FROM products
- query II
- SELECT count(*) FILTER (WHERE true) OVER (), count(*) FILTER (WHERE false) OVER () FROM products
- ----
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- 11 0
- query RRRR
- SELECT avg(price) FILTER (WHERE price > 300) OVER w1, sum(price) FILTER (WHERE group_name = 'Smartphone') OVER w2, avg(price) FILTER (WHERE price = 200 OR price = 700) OVER w1, avg(price) FILTER (WHERE price < 900) OVER w2 FROM products WINDOW w1 AS (ORDER BY group_id), w2 AS (PARTITION BY group_name ORDER BY price, group_id) ORDER BY group_id
- ----
- NULL 200.00 200.00 200.00
- 400.00 600.00 200.00 300.00
- 450.00 1100.00 200.00 366.66666666666666667
- 600.00 2000.00 200.00 366.66666666666666667
- 750.00 NULL 200.00 733.33333333333333333
- 740.00 NULL 450.00 700.00
- 733.33333333333333333 NULL 533.33333333333333333 700.00
- 742.85714285714285714 NULL 533.33333333333333333 733.33333333333333333
- 737.50 NULL 575.00 350.00
- 737.50 NULL 575.00 150.00
- 737.50 NULL 500.00 175.00
- statement error RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column
- SELECT sum(price) OVER (RANGE 100 PRECEDING) FROM products
- statement error RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column
- SELECT sum(price) OVER (ORDER BY price, priceint RANGE 100 PRECEDING) FROM products
- statement error invalid preceding or following size in window function
- SELECT sum(price) OVER (ORDER BY pdate RANGE '-1 days' PRECEDING) FROM products
- statement error invalid preceding or following size in window function
- SELECT sum(price) OVER (ORDER BY ptime RANGE BETWEEN '-1 hours' PRECEDING AND '1 hours' FOLLOWING) FROM products
- statement error invalid preceding or following size in window function
- SELECT sum(price) OVER (ORDER BY ptime RANGE BETWEEN '1 hours' PRECEDING AND '-1 hours' FOLLOWING) FROM products
- statement error incompatible window frame start type: decimal
- SELECT sum(price) OVER (ORDER BY ptimestamp RANGE 123.4 PRECEDING) FROM products
- statement error incompatible window frame start type: int
- SELECT sum(price) OVER (ORDER BY ptimestamptz RANGE BETWEEN 123 PRECEDING AND CURRENT ROW) FROM products
- statement error could not parse "1 days" as type decimal
- SELECT sum(price) OVER (ORDER BY price RANGE BETWEEN 123.4 PRECEDING AND '1 days' FOLLOWING) FROM products
- statement error RANGE with offset PRECEDING/FOLLOWING is not supported for column type varchar
- SELECT sum(price) OVER (ORDER BY product_name RANGE 'foo' PRECEDING) FROM products
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint RANGE 200 PRECEDING) FROM products ORDER BY group_name, priceint, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 1400
- Laptop Sony VAIO 700.00 1400
- Laptop Dell 800.00 2200
- Laptop HP Elite 1200.00 1200
- Smartphone Microsoft Lumia 200.00 200
- Smartphone HTC One 400.00 600
- Smartphone Nexus 500.00 900
- Smartphone iPhone 900.00 900
- Tablet Kindle Fire 150.00 150
- Tablet Samsung 200.00 350
- Tablet iPad 700.00 700
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price RANGE 200.002 PRECEDING) FROM products ORDER BY group_name, price, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 1400.00
- Laptop Sony VAIO 700.00 1400.00
- Laptop Dell 800.00 2200.00
- Laptop HP Elite 1200.00 1200.00
- Smartphone Microsoft Lumia 200.00 200.00
- Smartphone HTC One 400.00 600.00
- Smartphone Nexus 500.00 900.00
- Smartphone iPhone 900.00 900.00
- Tablet Kindle Fire 150.00 150.00
- Tablet Samsung 200.00 350.00
- Tablet iPad 700.00 700.00
- query TTRR
- SELECT group_name, product_name, price, sum(pricefloat) OVER (PARTITION BY group_name ORDER BY pricefloat RANGE BETWEEN 200.01 PRECEDING AND 99.99 FOLLOWING) FROM products ORDER BY group_name, priceint, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 1400
- Laptop Sony VAIO 700.00 1400
- Laptop Dell 800.00 2200
- Laptop HP Elite 1200.00 1200
- Smartphone Microsoft Lumia 200.00 200
- Smartphone HTC One 400.00 600
- Smartphone Nexus 500.00 900
- Smartphone iPhone 900.00 900
- Tablet Kindle Fire 150.00 350
- Tablet Samsung 200.00 350
- Tablet iPad 700.00 700
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price RANGE BETWEEN 99.99 PRECEDING AND 100.00 PRECEDING) FROM products ORDER BY group_name, priceint, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Laptop Dell 800.00 NULL
- Laptop HP Elite 1200.00 NULL
- Smartphone Microsoft Lumia 200.00 NULL
- Smartphone HTC One 400.00 NULL
- Smartphone Nexus 500.00 NULL
- Smartphone iPhone 900.00 NULL
- Tablet Kindle Fire 150.00 NULL
- Tablet Samsung 200.00 NULL
- Tablet iPad 700.00 NULL
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint RANGE BETWEEN 300 PRECEDING AND 50 PRECEDING) FROM products ORDER BY group_name, priceint, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Laptop Dell 800.00 1400
- Laptop HP Elite 1200.00 NULL
- Smartphone Microsoft Lumia 200.00 NULL
- Smartphone HTC One 400.00 200
- Smartphone Nexus 500.00 600
- Smartphone iPhone 900.00 NULL
- Tablet Kindle Fire 150.00 NULL
- Tablet Samsung 200.00 150
- Tablet iPad 700.00 NULL
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint RANGE BETWEEN 50 FOLLOWING AND 300 FOLLOWING) FROM products ORDER BY group_name, priceint, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 800
- Laptop Sony VAIO 700.00 800
- Laptop Dell 800.00 NULL
- Laptop HP Elite 1200.00 NULL
- Smartphone Microsoft Lumia 200.00 900
- Smartphone HTC One 400.00 500
- Smartphone Nexus 500.00 NULL
- Smartphone iPhone 900.00 NULL
- Tablet Kindle Fire 150.00 200
- Tablet Samsung 200.00 NULL
- Tablet iPad 700.00 NULL
- query TRR
- SELECT group_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price RANGE BETWEEN 49.999 FOLLOWING AND 300.001 FOLLOWING) FROM products ORDER BY group_name, price, group_id
- ----
- Laptop 700.00 800.00
- Laptop 700.00 800.00
- Laptop 800.00 NULL
- Laptop 1200.00 NULL
- Smartphone 200.00 900.00
- Smartphone 400.00 500.00
- Smartphone 500.00 NULL
- Smartphone 900.00 NULL
- Tablet 150.00 200.00
- Tablet 200.00 NULL
- Tablet 700.00 NULL
- query TRR
- SELECT group_name, price, sum(pricefloat) OVER (PARTITION BY group_name ORDER BY pricefloat RANGE BETWEEN 50 FOLLOWING AND 300 FOLLOWING) FROM products ORDER BY group_name, price, group_id
- ----
- Laptop 700.00 800
- Laptop 700.00 800
- Laptop 800.00 NULL
- Laptop 1200.00 NULL
- Smartphone 200.00 900
- Smartphone 400.00 500
- Smartphone 500.00 NULL
- Smartphone 900.00 NULL
- Tablet 150.00 200
- Tablet 200.00 NULL
- Tablet 700.00 NULL
- query TTRR
- SELECT group_name, product_name, price, nth_value(pricefloat, 2) OVER (PARTITION BY group_name ORDER BY pricefloat RANGE BETWEEN 1.23 FOLLOWING AND 500.23 FOLLOWING) FROM products ORDER BY group_name, pricefloat, group_id
- ----
- Laptop Lenovo Thinkpad 700.00 1200
- Laptop Sony VAIO 700.00 1200
- Laptop Dell 800.00 NULL
- Laptop HP Elite 1200.00 NULL
- Smartphone Microsoft Lumia 200.00 500
- Smartphone HTC One 400.00 900
- Smartphone Nexus 500.00 NULL
- Smartphone iPhone 900.00 NULL
- Tablet Kindle Fire 150.00 NULL
- Tablet Samsung 200.00 NULL
- Tablet iPad 700.00 NULL
- query TTTRR
- SELECT group_name, product_name, pdate, price, sum(price) OVER (ORDER BY pdate RANGE '1 days' PRECEDING) FROM products ORDER BY pdate, group_id
- ----
- Smartphone Microsoft Lumia 2018-07-30 00:00:00 +0000 +0000 200.00 3500.00
- Smartphone Nexus 2018-07-30 00:00:00 +0000 +0000 500.00 3500.00
- Laptop HP Elite 2018-07-30 00:00:00 +0000 +0000 1200.00 3500.00
- Laptop Sony VAIO 2018-07-30 00:00:00 +0000 +0000 700.00 3500.00
- Tablet iPad 2018-07-30 00:00:00 +0000 +0000 700.00 3500.00
- Tablet Samsung 2018-07-30 00:00:00 +0000 +0000 200.00 3500.00
- Smartphone HTC One 2018-07-31 00:00:00 +0000 +0000 400.00 6450.00
- Smartphone iPhone 2018-07-31 00:00:00 +0000 +0000 900.00 6450.00
- Laptop Lenovo Thinkpad 2018-07-31 00:00:00 +0000 +0000 700.00 6450.00
- Laptop Dell 2018-07-31 00:00:00 +0000 +0000 800.00 6450.00
- Tablet Kindle Fire 2018-07-31 00:00:00 +0000 +0000 150.00 6450.00
- query TTRR
- SELECT product_name, ptime, price, avg(price) OVER (ORDER BY ptime RANGE BETWEEN '1 hours 15 minutes' PRECEDING AND '1 hours 15 minutes' FOLLOWING) FROM products ORDER BY ptime, group_id
- ----
- Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 700.00
- HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
- iPad 0000-01-01 01:23:45 +0000 UTC 700.00 700.00
- iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 850.00
- Dell 0000-01-01 07:34:56 +0000 UTC 800.00 850.00
- Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 441.66666666666666667
- Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 441.66666666666666667
- Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 441.66666666666666667
- HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 441.66666666666666667
- Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 441.66666666666666667
- Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 441.66666666666666667
- query TTTRR
- SELECT group_name, product_name, ptime, price, min(price) OVER (PARTITION BY group_name ORDER BY ptime RANGE BETWEEN '1 hours' FOLLOWING AND UNBOUNDED FOLLOWING) FROM products ORDER BY group_name, ptime
- ----
- Laptop HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
- Laptop Dell 0000-01-01 07:34:56 +0000 UTC 800.00 700.00
- Laptop Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 700.00
- Laptop Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 NULL
- Smartphone Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 400.00
- Smartphone iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 400.00
- Smartphone Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 400.00
- Smartphone HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 NULL
- Tablet iPad 0000-01-01 01:23:45 +0000 UTC 700.00 150.00
- Tablet Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 150.00
- Tablet Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 NULL
- query TTTRR
- SELECT group_name, product_name, ptimestamp, price, first_value(price) OVER (PARTITION BY group_name ORDER BY ptimestamp RANGE BETWEEN '12 hours' PRECEDING AND '6 hours' FOLLOWING) FROM products ORDER BY group_name, ptimestamp
- ----
- Laptop HP Elite 2018-07-30 01:23:45 +0000 +0000 1200.00 1200.00
- Laptop Sony VAIO 2018-07-30 11:23:45 +0000 +0000 700.00 1200.00
- Laptop Dell 2018-07-31 07:34:56 +0000 +0000 800.00 800.00
- Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 +0000 700.00 800.00
- Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 +0000 200.00 200.00
- Smartphone Nexus 2018-07-30 11:23:45 +0000 +0000 500.00 200.00
- Smartphone iPhone 2018-07-31 07:34:56 +0000 +0000 900.00 900.00
- Smartphone HTC One 2018-07-31 12:34:56 +0000 +0000 400.00 900.00
- Tablet iPad 2018-07-30 01:23:45 +0000 +0000 700.00 700.00
- Tablet Samsung 2018-07-30 11:23:45 +0000 +0000 200.00 700.00
- Tablet Kindle Fire 2018-07-31 12:34:56 +0000 +0000 150.00 150.00
- query TTTRR
- SELECT group_name, product_name, ptimestamptz, price, avg(price) OVER (PARTITION BY group_name ORDER BY ptimestamptz RANGE BETWEEN '1 days 12 hours' PRECEDING AND CURRENT ROW) FROM products ORDER BY group_name, ptimestamptz
- ----
- Laptop HP Elite 2018-07-30 01:23:45 +0000 UTC 1200.00 1200.00
- Laptop Sony VAIO 2018-07-30 11:23:45 +0000 UTC 700.00 950.00
- Laptop Dell 2018-07-31 07:34:56 +0000 UTC 800.00 900.00
- Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 UTC 700.00 850.00
- Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 UTC 200.00 200.00
- Smartphone Nexus 2018-07-30 11:23:45 +0000 UTC 500.00 350.00
- Smartphone iPhone 2018-07-31 07:34:56 +0000 UTC 900.00 533.33333333333333333
- Smartphone HTC One 2018-07-31 12:34:56 +0000 UTC 400.00 500.00
- Tablet iPad 2018-07-30 01:23:45 +0000 UTC 700.00 700.00
- Tablet Samsung 2018-07-30 11:23:45 +0000 UTC 200.00 450.00
- Tablet Kindle Fire 2018-07-31 12:34:56 +0000 UTC 150.00 350.00
- query TTRR
- SELECT product_name, pinterval, price, avg(price) OVER (ORDER BY pinterval RANGE BETWEEN '2 hours 34 minutes 56 seconds' PRECEDING AND '3 months' FOLLOWING) FROM products ORDER BY pinterval, group_id
- ----
- iPhone 00:01:02 900.00 586.36363636363636364
- Dell 00:01:02 800.00 586.36363636363636364
- Nexus 01:02:03 500.00 586.36363636363636364
- Sony VAIO 01:02:03 700.00 586.36363636363636364
- Samsung 01:02:03 200.00 586.36363636363636364
- HTC One 1 day 02:03:04 400.00 558.33333333333333333
- Lenovo Thinkpad 1 day 02:03:04 700.00 558.33333333333333333
- Kindle Fire 1 day 02:03:04 150.00 558.33333333333333333
- Microsoft Lumia 1 mon 2 days 03:04:05 200.00 700.00
- HP Elite 1 mon 2 days 03:04:05 1200.00 700.00
- iPad 1 mon 2 days 03:04:05 700.00 700.00
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint DESC RANGE 200 PRECEDING) FROM products ORDER BY group_name, priceint DESC, group_id
- ----
- Laptop HP Elite 1200.00 1200
- Laptop Dell 800.00 800
- Laptop Lenovo Thinkpad 700.00 2200
- Laptop Sony VAIO 700.00 2200
- Smartphone iPhone 900.00 900
- Smartphone Nexus 500.00 500
- Smartphone HTC One 400.00 900
- Smartphone Microsoft Lumia 200.00 600
- Tablet iPad 700.00 700
- Tablet Samsung 200.00 200
- Tablet Kindle Fire 150.00 350
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price DESC RANGE 200.002 PRECEDING) FROM products ORDER BY group_name, price DESC, group_id
- ----
- Laptop HP Elite 1200.00 1200.00
- Laptop Dell 800.00 800.00
- Laptop Lenovo Thinkpad 700.00 2200.00
- Laptop Sony VAIO 700.00 2200.00
- Smartphone iPhone 900.00 900.00
- Smartphone Nexus 500.00 500.00
- Smartphone HTC One 400.00 900.00
- Smartphone Microsoft Lumia 200.00 600.00
- Tablet iPad 700.00 700.00
- Tablet Samsung 200.00 200.00
- Tablet Kindle Fire 150.00 350.00
- query TTRR
- SELECT group_name, product_name, price, sum(pricefloat) OVER (PARTITION BY group_name ORDER BY pricefloat DESC RANGE BETWEEN 200.01 PRECEDING AND 99.99 FOLLOWING) FROM products ORDER BY group_name, priceint DESC, group_id
- ----
- Laptop HP Elite 1200.00 1200
- Laptop Dell 800.00 800
- Laptop Lenovo Thinkpad 700.00 2200
- Laptop Sony VAIO 700.00 2200
- Smartphone iPhone 900.00 900
- Smartphone Nexus 500.00 500
- Smartphone HTC One 400.00 900
- Smartphone Microsoft Lumia 200.00 600
- Tablet iPad 700.00 700
- Tablet Samsung 200.00 350
- Tablet Kindle Fire 150.00 350
- query TTRR
- SELECT group_name, product_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price DESC RANGE BETWEEN 99.99 PRECEDING AND 100.00 PRECEDING) FROM products ORDER BY group_name, priceint DESC, group_id
- ----
- Laptop HP Elite 1200.00 NULL
- Laptop Dell 800.00 NULL
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Smartphone iPhone 900.00 NULL
- Smartphone Nexus 500.00 NULL
- Smartphone HTC One 400.00 NULL
- Smartphone Microsoft Lumia 200.00 NULL
- Tablet iPad 700.00 NULL
- Tablet Samsung 200.00 NULL
- Tablet Kindle Fire 150.00 NULL
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint DESC RANGE BETWEEN 300 PRECEDING AND 50 PRECEDING) FROM products ORDER BY group_name, priceint DESC, group_id
- ----
- Laptop HP Elite 1200.00 NULL
- Laptop Dell 800.00 NULL
- Laptop Lenovo Thinkpad 700.00 800
- Laptop Sony VAIO 700.00 800
- Smartphone iPhone 900.00 NULL
- Smartphone Nexus 500.00 NULL
- Smartphone HTC One 400.00 500
- Smartphone Microsoft Lumia 200.00 900
- Tablet iPad 700.00 NULL
- Tablet Samsung 200.00 NULL
- Tablet Kindle Fire 150.00 200
- query TTRR
- SELECT group_name, product_name, price, sum(priceint) OVER (PARTITION BY group_name ORDER BY priceint DESC RANGE BETWEEN 50 FOLLOWING AND 300 FOLLOWING) FROM products ORDER BY group_name, priceint DESC, group_id
- ----
- Laptop HP Elite 1200.00 NULL
- Laptop Dell 800.00 1400
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Smartphone iPhone 900.00 NULL
- Smartphone Nexus 500.00 600
- Smartphone HTC One 400.00 200
- Smartphone Microsoft Lumia 200.00 NULL
- Tablet iPad 700.00 NULL
- Tablet Samsung 200.00 150
- Tablet Kindle Fire 150.00 NULL
- query TRR
- SELECT group_name, price, sum(price) OVER (PARTITION BY group_name ORDER BY price DESC RANGE BETWEEN 49.999 FOLLOWING AND 300.001 FOLLOWING) FROM products ORDER BY group_name, price DESC, group_id
- ----
- Laptop 1200.00 NULL
- Laptop 800.00 1400.00
- Laptop 700.00 NULL
- Laptop 700.00 NULL
- Smartphone 900.00 NULL
- Smartphone 500.00 600.00
- Smartphone 400.00 200.00
- Smartphone 200.00 NULL
- Tablet 700.00 NULL
- Tablet 200.00 150.00
- Tablet 150.00 NULL
- query TRR
- SELECT group_name, price, sum(pricefloat) OVER (PARTITION BY group_name ORDER BY pricefloat DESC RANGE BETWEEN 50 FOLLOWING AND 300 FOLLOWING) FROM products ORDER BY group_name, price DESC, group_id
- ----
- Laptop 1200.00 NULL
- Laptop 800.00 1400
- Laptop 700.00 NULL
- Laptop 700.00 NULL
- Smartphone 900.00 NULL
- Smartphone 500.00 600
- Smartphone 400.00 200
- Smartphone 200.00 NULL
- Tablet 700.00 NULL
- Tablet 200.00 150
- Tablet 150.00 NULL
- query TTRR
- SELECT group_name, product_name, price, nth_value(pricefloat, 2) OVER (PARTITION BY group_name ORDER BY pricefloat DESC RANGE BETWEEN 1.23 FOLLOWING AND 500.23 FOLLOWING) FROM products ORDER BY group_name, pricefloat DESC, group_id
- ----
- Laptop HP Elite 1200.00 700
- Laptop Dell 800.00 700
- Laptop Lenovo Thinkpad 700.00 NULL
- Laptop Sony VAIO 700.00 NULL
- Smartphone iPhone 900.00 400
- Smartphone Nexus 500.00 200
- Smartphone HTC One 400.00 NULL
- Smartphone Microsoft Lumia 200.00 NULL
- Tablet iPad 700.00 NULL
- Tablet Samsung 200.00 NULL
- Tablet Kindle Fire 150.00 NULL
- query TTTRR
- SELECT group_name, product_name, pdate, price, sum(price) OVER (ORDER BY pdate DESC RANGE '1 days' PRECEDING) FROM products ORDER BY pdate DESC, group_id
- ----
- Smartphone HTC One 2018-07-31 00:00:00 +0000 +0000 400.00 2950.00
- Smartphone iPhone 2018-07-31 00:00:00 +0000 +0000 900.00 2950.00
- Laptop Lenovo Thinkpad 2018-07-31 00:00:00 +0000 +0000 700.00 2950.00
- Laptop Dell 2018-07-31 00:00:00 +0000 +0000 800.00 2950.00
- Tablet Kindle Fire 2018-07-31 00:00:00 +0000 +0000 150.00 2950.00
- Smartphone Microsoft Lumia 2018-07-30 00:00:00 +0000 +0000 200.00 6450.00
- Smartphone Nexus 2018-07-30 00:00:00 +0000 +0000 500.00 6450.00
- Laptop HP Elite 2018-07-30 00:00:00 +0000 +0000 1200.00 6450.00
- Laptop Sony VAIO 2018-07-30 00:00:00 +0000 +0000 700.00 6450.00
- Tablet iPad 2018-07-30 00:00:00 +0000 +0000 700.00 6450.00
- Tablet Samsung 2018-07-30 00:00:00 +0000 +0000 200.00 6450.00
- query TTRR
- SELECT product_name, ptime, price, avg(price) OVER (ORDER BY ptime DESC RANGE BETWEEN '1 hours 15 minutes' PRECEDING AND '1 hours 15 minutes' FOLLOWING) FROM products ORDER BY ptime DESC, group_id
- ----
- HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 441.66666666666666667
- Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 441.66666666666666667
- Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 441.66666666666666667
- Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 441.66666666666666667
- Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 441.66666666666666667
- Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 441.66666666666666667
- iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 850.00
- Dell 0000-01-01 07:34:56 +0000 UTC 800.00 850.00
- Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 700.00
- HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
- iPad 0000-01-01 01:23:45 +0000 UTC 700.00 700.00
- query TTTRR
- SELECT group_name, product_name, ptime, price, min(price) OVER (PARTITION BY group_name ORDER BY ptime DESC RANGE BETWEEN '1 hours' FOLLOWING AND UNBOUNDED FOLLOWING) FROM products ORDER BY group_name, ptime DESC
- ----
- Laptop Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 700.00
- Laptop Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 800.00
- Laptop Dell 0000-01-01 07:34:56 +0000 UTC 800.00 1200.00
- Laptop HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 NULL
- Smartphone HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 200.00
- Smartphone Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 200.00
- Smartphone iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 200.00
- Smartphone Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 NULL
- Tablet Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 200.00
- Tablet Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 700.00
- Tablet iPad 0000-01-01 01:23:45 +0000 UTC 700.00 NULL
- query TTTRR
- SELECT group_name, product_name, ptimestamp, price, first_value(price) OVER (PARTITION BY group_name ORDER BY ptimestamp DESC RANGE BETWEEN '12 hours' PRECEDING AND '6 hours' FOLLOWING) FROM products ORDER BY group_name, ptimestamp DESC
- ----
- Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 +0000 700.00 700.00
- Laptop Dell 2018-07-31 07:34:56 +0000 +0000 800.00 700.00
- Laptop Sony VAIO 2018-07-30 11:23:45 +0000 +0000 700.00 700.00
- Laptop HP Elite 2018-07-30 01:23:45 +0000 +0000 1200.00 700.00
- Smartphone HTC One 2018-07-31 12:34:56 +0000 +0000 400.00 400.00
- Smartphone iPhone 2018-07-31 07:34:56 +0000 +0000 900.00 400.00
- Smartphone Nexus 2018-07-30 11:23:45 +0000 +0000 500.00 500.00
- Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 +0000 200.00 500.00
- Tablet Kindle Fire 2018-07-31 12:34:56 +0000 +0000 150.00 150.00
- Tablet Samsung 2018-07-30 11:23:45 +0000 +0000 200.00 200.00
- Tablet iPad 2018-07-30 01:23:45 +0000 +0000 700.00 200.00
- query TTTRR
- SELECT group_name, product_name, ptimestamptz, price, avg(price) OVER (PARTITION BY group_name ORDER BY ptimestamptz DESC RANGE BETWEEN '1 days 12 hours' PRECEDING AND CURRENT ROW) FROM products ORDER BY group_name, ptimestamptz DESC
- ----
- Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 UTC 700.00 700.00
- Laptop Dell 2018-07-31 07:34:56 +0000 UTC 800.00 750.00
- Laptop Sony VAIO 2018-07-30 11:23:45 +0000 UTC 700.00 733.33333333333333333
- Laptop HP Elite 2018-07-30 01:23:45 +0000 UTC 1200.00 850.00
- Smartphone HTC One 2018-07-31 12:34:56 +0000 UTC 400.00 400.00
- Smartphone iPhone 2018-07-31 07:34:56 +0000 UTC 900.00 650.00
- Smartphone Nexus 2018-07-30 11:23:45 +0000 UTC 500.00 600.00
- Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 UTC 200.00 500.00
- Tablet Kindle Fire 2018-07-31 12:34:56 +0000 UTC 150.00 150.00
- Tablet Samsung 2018-07-30 11:23:45 +0000 UTC 200.00 175.00
- Tablet iPad 2018-07-30 01:23:45 +0000 UTC 700.00 350.00
- query TTRR
- SELECT product_name, pinterval, price, avg(price) OVER (ORDER BY pinterval DESC RANGE BETWEEN '2 hours 34 minutes 56 seconds' PRECEDING AND '3 months' FOLLOWING) FROM products ORDER BY pinterval DESC, group_id
- ----
- Microsoft Lumia 1 mon 2 days 03:04:05 200.00 586.36363636363636364
- HP Elite 1 mon 2 days 03:04:05 1200.00 586.36363636363636364
- iPad 1 mon 2 days 03:04:05 700.00 586.36363636363636364
- HTC One 1 day 02:03:04 400.00 543.75
- Lenovo Thinkpad 1 day 02:03:04 700.00 543.75
- Kindle Fire 1 day 02:03:04 150.00 543.75
- Nexus 01:02:03 500.00 620.00
- Sony VAIO 01:02:03 700.00 620.00
- Samsung 01:02:03 200.00 620.00
- iPhone 00:01:02 900.00 620.00
- Dell 00:01:02 800.00 620.00
- query TRTT
- SELECT group_name, price, product_name, array_agg(product_name) OVER (PARTITION BY group_name ORDER BY price, group_id) FROM products ORDER BY group_id
- ----
- Smartphone 200.00 Microsoft Lumia {"Microsoft Lumia"}
- Smartphone 400.00 HTC One {"Microsoft Lumia","HTC One"}
- Smartphone 500.00 Nexus {"Microsoft Lumia","HTC One",Nexus}
- Smartphone 900.00 iPhone {"Microsoft Lumia","HTC One",Nexus,iPhone}
- Laptop 1200.00 HP Elite {"Lenovo Thinkpad","Sony VAIO",Dell,"HP Elite"}
- Laptop 700.00 Lenovo Thinkpad {"Lenovo Thinkpad"}
- Laptop 700.00 Sony VAIO {"Lenovo Thinkpad","Sony VAIO"}
- Laptop 800.00 Dell {"Lenovo Thinkpad","Sony VAIO",Dell}
- Tablet 700.00 iPad {"Kindle Fire",Samsung,iPad}
- Tablet 150.00 Kindle Fire {"Kindle Fire"}
- Tablet 200.00 Samsung {"Kindle Fire",Samsung}
- query TT
- SELECT product_name, array_agg(product_name) OVER (ORDER BY group_id) FROM products ORDER BY group_id
- ----
- Microsoft Lumia {"Microsoft Lumia"}
- HTC One {"Microsoft Lumia","HTC One"}
- Nexus {"Microsoft Lumia","HTC One",Nexus}
- iPhone {"Microsoft Lumia","HTC One",Nexus,iPhone}
- HP Elite {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite"}
- Lenovo Thinkpad {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad"}
- Sony VAIO {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO"}
- Dell {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell}
- iPad {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad}
- Kindle Fire {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad,"Kindle Fire"}
- Samsung {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad,"Kindle Fire",Samsung}
- statement error frame starting offset must not be null
- SELECT avg(price) OVER (GROUPS NULL PRECEDING) FROM products
- statement error frame starting offset must not be null
- SELECT avg(price) OVER (GROUPS BETWEEN NULL PRECEDING AND 1 FOLLOWING) FROM products
- statement error frame starting offset must not be negative
- SELECT price, avg(price) OVER (PARTITION BY price GROUPS -1 PRECEDING) AS avg_price FROM products
- statement error frame starting offset must not be negative
- SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price GROUPS -1 PRECEDING)
- statement error frame ending offset must not be null
- SELECT avg(price) OVER (GROUPS BETWEEN 1 PRECEDING AND NULL FOLLOWING) FROM products
- statement error frame ending offset must not be negative
- SELECT price, avg(price) OVER (PARTITION BY price GROUPS BETWEEN 1 FOLLOWING AND -1 FOLLOWING) AS avg_price FROM products
- statement error frame ending offset must not be negative
- SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price GROUPS BETWEEN 1 FOLLOWING AND -1 FOLLOWING)
- statement error frame ending offset must not be negative
- SELECT product_name, price, min(price) OVER (PARTITION BY group_name GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS min_over_three, max(price) OVER (PARTITION BY group_name GROUPS BETWEEN UNBOUNDED PRECEDING AND -1 FOLLOWING) AS max_over_partition FROM products ORDER BY group_id
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name GROUPS 1.5 PRECEDING) AS avg_price FROM products
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name GROUPS 1.5 PRECEDING)
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name GROUPS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING) AS avg_price FROM products
- statement error incompatible window frame start type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name GROUPS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING)
- statement error incompatible window frame end type: decimal
- SELECT avg(price) OVER (PARTITION BY group_name GROUPS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING) AS avg_price FROM products
- statement error incompatible window frame end type: decimal
- SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name GROUPS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING)
- query RRRRR
- SELECT price, sum(price) OVER (ORDER BY price GROUPS UNBOUNDED PRECEDING), sum(price) OVER (ORDER BY price GROUPS 100 PRECEDING), sum(price) OVER (ORDER BY price GROUPS 1 PRECEDING), sum(price) OVER (ORDER BY group_name GROUPS CURRENT ROW) FROM products ORDER BY price, group_id
- ----
- 150.00 150.00 150.00 150.00 1050.00
- 200.00 550.00 550.00 550.00 2000.00
- 200.00 550.00 550.00 550.00 1050.00
- 400.00 950.00 950.00 800.00 2000.00
- 500.00 1450.00 1450.00 900.00 2000.00
- 700.00 3550.00 3550.00 2600.00 3400.00
- 700.00 3550.00 3550.00 2600.00 3400.00
- 700.00 3550.00 3550.00 2600.00 1050.00
- 800.00 4350.00 4350.00 2900.00 3400.00
- 900.00 5250.00 5250.00 1700.00 2000.00
- 1200.00 6450.00 6450.00 2100.00 3400.00
- query RIRRRRRR
- SELECT price, dense_rank() OVER w, avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND 100 PRECEDING), avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING), avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND 100 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM products WINDOW w AS (ORDER BY price) ORDER BY price
- ----
- 150.00 1 NULL NULL 150.00 237.50 586.36363636363636364 586.36363636363636364
- 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
- 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
- 400.00 3 NULL 150.00 237.50 443.75 586.36363636363636364 586.36363636363636364
- 500.00 4 NULL 183.33333333333333333 290.00 483.33333333333333333 586.36363636363636364 586.36363636363636364
- 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
- 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
- 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
- 800.00 6 NULL 290.00 483.33333333333333333 586.36363636363636364 586.36363636363636364 586.36363636363636364
- 900.00 7 NULL 443.75 525.00 586.36363636363636364 586.36363636363636364 586.36363636363636364
- 1200.00 8 NULL 483.33333333333333333 586.36363636363636364 586.36363636363636364 586.36363636363636364 586.36363636363636364
- query RIRRRRRR
- SELECT price, dense_rank() OVER w, avg(price) OVER (w GROUPS BETWEEN 4 PRECEDING AND 100 PRECEDING), avg(price) OVER (w GROUPS BETWEEN 3 PRECEDING AND 2 PRECEDING), avg(price) OVER (w GROUPS BETWEEN 2 PRECEDING AND CURRENT ROW), avg(price) OVER (w GROUPS BETWEEN 1 PRECEDING AND 2 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 1 PRECEDING AND 100 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 1 PRECEDING AND UNBOUNDED FOLLOWING) FROM products WINDOW w AS (ORDER BY price) ORDER BY price
- ----
- 150.00 1 NULL NULL 150.00 237.50 586.36363636363636364 586.36363636363636364
- 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
- 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
- 400.00 3 NULL 150.00 237.50 485.71428571428571429 630.00 630.00
- 500.00 4 NULL 183.33333333333333333 325.00 633.33333333333333333 737.50 737.50
- 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
- 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
- 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
- 800.00 6 NULL 450.00 680.00 833.33333333333333333 833.33333333333333333 833.33333333333333333
- 900.00 7 NULL 650.00 760.00 966.66666666666666667 966.66666666666666667 966.66666666666666667
- 1200.00 8 NULL 725.00 966.66666666666666667 1050.00 1050.00 1050.00
- query RIRRRRRRR
- SELECT price, dense_rank() OVER w, avg(price) OVER (w GROUPS BETWEEN 0 PRECEDING AND 0 PRECEDING), avg(price) OVER (w GROUPS BETWEEN 0 PRECEDING AND CURRENT ROW), avg(price) OVER (w GROUPS BETWEEN 0 PRECEDING AND 0 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN CURRENT ROW AND CURRENT ROW), avg(price) OVER (w GROUPS BETWEEN CURRENT ROW AND 2 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN CURRENT ROW AND 100 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM products WINDOW w AS (ORDER BY price) ORDER BY price
- ----
- 150.00 1 150.00 150.00 150.00 150.00 237.50 586.36363636363636364 586.36363636363636364
- 200.00 2 200.00 200.00 200.00 200.00 325.00 630.00 630.00
- 200.00 2 200.00 200.00 200.00 200.00 325.00 630.00 630.00
- 400.00 3 400.00 400.00 400.00 400.00 600.00 737.50 737.50
- 500.00 4 500.00 500.00 500.00 500.00 680.00 785.71428571428571429 785.71428571428571429
- 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
- 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
- 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
- 800.00 6 800.00 800.00 800.00 800.00 966.66666666666666667 966.66666666666666667 966.66666666666666667
- 900.00 7 900.00 900.00 900.00 900.00 1050.00 1050.00 1050.00
- 1200.00 8 1200.00 1200.00 1200.00 1200.00 1200.00 1200.00 1200.00
- query RIRRRRRR
- SELECT price, dense_rank() OVER w, avg(price) OVER (w GROUPS BETWEEN 3 FOLLOWING AND 100 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 3 FOLLOWING AND 1 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 2 FOLLOWING AND 6 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 3 FOLLOWING AND 3 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 0 FOLLOWING AND 4 FOLLOWING), avg(price) OVER (w GROUPS BETWEEN 5 FOLLOWING AND UNBOUNDED FOLLOWING) FROM products WINDOW w AS (ORDER BY price) ORDER BY price
- ----
- 150.00 1 785.71428571428571429 NULL 671.42857142857142857 500.00 443.75 966.66666666666666667
- 200.00 2 833.33333333333333333 NULL 785.71428571428571429 700.00 525.00 1050.00
- 200.00 2 833.33333333333333333 NULL 785.71428571428571429 700.00 525.00 1050.00
- 400.00 3 966.66666666666666667 NULL 833.33333333333333333 800.00 671.42857142857142857 1200.00
- 500.00 4 1050.00 NULL 966.66666666666666667 900.00 785.71428571428571429 NULL
- 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
- 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
- 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
- 800.00 6 NULL NULL 1200.00 NULL 966.66666666666666667 NULL
- 900.00 7 NULL NULL NULL NULL 1050.00 NULL
- 1200.00 8 NULL NULL NULL NULL 1200.00 NULL
- query TTRRR
- SELECT group_name, product_name, price, avg(price) OVER (PARTITION BY group_name ORDER BY price GROUPS BETWEEN CURRENT ROW AND 3 FOLLOWING), avg(price) OVER (ORDER BY price GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 500.00 586.36363636363636364
- Smartphone HTC One 400.00 600.00 586.36363636363636364
- Smartphone Nexus 500.00 700.00 586.36363636363636364
- Smartphone iPhone 900.00 900.00 586.36363636363636364
- Laptop HP Elite 1200.00 1200.00 586.36363636363636364
- Laptop Lenovo Thinkpad 700.00 850.00 586.36363636363636364
- Laptop Sony VAIO 700.00 850.00 586.36363636363636364
- Laptop Dell 800.00 1000.00 586.36363636363636364
- Tablet iPad 700.00 700.00 586.36363636363636364
- Tablet Kindle Fire 150.00 350.00 586.36363636363636364
- Tablet Samsung 200.00 450.00 586.36363636363636364
- query TTRRR
- SELECT group_name, product_name, price, avg(price) OVER (GROUPS BETWEEN 1 PRECEDING AND 2 PRECEDING), avg(price) OVER (ORDER BY price GROUPS BETWEEN CURRENT ROW AND CURRENT ROW) FROM products ORDER BY group_id
- ----
- Smartphone Microsoft Lumia 200.00 NULL 200.00
- Smartphone HTC One 400.00 NULL 400.00
- Smartphone Nexus 500.00 NULL 500.00
- Smartphone iPhone 900.00 NULL 900.00
- Laptop HP Elite 1200.00 NULL 1200.00
- Laptop Lenovo Thinkpad 700.00 NULL 700.00
- Laptop Sony VAIO 700.00 NULL 700.00
- Laptop Dell 800.00 NULL 800.00
- Tablet iPad 700.00 NULL 700.00
- Tablet Kindle Fire 150.00 NULL 150.00
- Tablet Samsung 200.00 NULL 200.00
- # Test for cockroach#32702
- statement ok
- CREATE TABLE x (a INT)
- statement ok
- INSERT INTO x VALUES (1), (2), (3)
- query IT
- SELECT a, json_agg(a) OVER (ORDER BY a) FROM x ORDER BY a
- ----
- 1 [1]
- 2 [1, 2]
- 3 [1, 2, 3]
- # Test for cockroach#35267
- query I
- SELECT
- row_number() OVER (PARTITION BY s)
- FROM
- (SELECT sum(a) AS s FROM (SELECT a FROM x UNION ALL SELECT a FROM x) GROUP BY a)
- ----
- 1
- 1
- 1
- # Tests for cockroach#32050
- statement error window function calls cannot be nested
- SELECT sum(a) OVER (PARTITION BY count(a) OVER ()) FROM x
- statement error window function calls cannot be nested
- SELECT sum(a) OVER (ORDER BY count(a) OVER ()) FROM x
- statement error window function calls cannot be nested
- SELECT sum(a) OVER (PARTITION BY count(a) OVER () + 1) FROM x
- statement error window function calls cannot be nested
- SELECT sum(a) OVER (ORDER BY count(a) OVER () + 1) FROM x
- # TODO(justin): blocked by cockroach#37134.
- # statement error more than one row returned by a subquery used as an expression
- # SELECT sum(a) OVER (PARTITION BY (SELECT count(*) FROM x GROUP BY a)) FROM x
- query I
- SELECT sum(a) OVER (PARTITION BY (SELECT count(*) FROM x GROUP BY a LIMIT 1))::INT FROM x
- ----
- 6
- 6
- 6
- # Regression test for materialize#27293 - make sure comparing two tuple types when
- # generating window functions expressions doesn't panic.
- query II
- SELECT
- min(a) OVER (PARTITION BY (a, a)) AS min,
- max(a) OVER (PARTITION BY (a, a)) AS max
- FROM
- (SELECT 1 AS a)
- ----
- 1 1
- query II
- SELECT
- min(a) OVER (PARTITION BY (())) AS min,
- max(a) OVER (PARTITION BY (())) AS max
- FROM
- (SELECT 1 AS a)
- ----
- 1 1
- query T
- SELECT string_agg('foo', s) OVER () FROM (SELECT * FROM kv LIMIT 1)
- ----
- foo
- # Regression test for cockroach#37201.
- query I
- SELECT jsonb_agg(a) OVER (ORDER BY a GROUPS BETWEEN 5 FOLLOWING AND UNBOUNDED FOLLOWING) FROM x
- ----
- NULL
- NULL
- NULL
- statement ok
- CREATE TABLE abc (a INT PRIMARY KEY, b INT, c INT)
- statement ok
- INSERT INTO abc VALUES
- (1, 10, 20),
- (2, 10, 20),
- (3, 10, 20),
- (4, 10, 30),
- (5, 10, 30),
- (6, 10, 30)
- query TTTTTTTTTTTT rowsort
- SELECT
- avg(a) OVER (),
- avg(a) OVER (ORDER BY a),
- avg(a) OVER (ORDER BY b),
- avg(a) OVER (ORDER BY c),
- avg(b) OVER (),
- avg(b) OVER (ORDER BY a),
- avg(b) OVER (ORDER BY b),
- avg(b) OVER (ORDER BY c),
- avg(c) OVER (),
- avg(c) OVER (ORDER BY a),
- avg(c) OVER (ORDER BY b),
- avg(c) OVER (ORDER BY c)
- FROM abc
- ----
- 3.5 1 3.5 2 10 10 10 10 25 20 25 20
- 3.5 1.5 3.5 2 10 10 10 10 25 20 25 20
- 3.5 2 3.5 2 10 10 10 10 25 20 25 20
- 3.5 2.5 3.5 3.5 10 10 10 10 25 22.5 25 25
- 3.5 3 3.5 3.5 10 10 10 10 25 24 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- query TTTTTTTTTTTT rowsort
- SELECT
- avg(a) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(a) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(a) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(a) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(b) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(b) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(b) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(c) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(c) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(c) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
- avg(c) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
- FROM abc
- ----
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
- 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
|