window.slt 96 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140
  1. # Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
  2. # Copyright Materialize, Inc. and contributors. All rights reserved.
  3. #
  4. # Use of this software is governed by the Business Source License
  5. # included in the LICENSE file at the root of this repository.
  6. #
  7. # As of the Change Date specified in that file, in accordance with
  8. # the Business Source License, use of this software will be governed
  9. # by the Apache License, Version 2.0.
  10. #
  11. # This file is derived from the logic test suite in CockroachDB. The
  12. # original file was retrieved on June 10, 2019 from:
  13. #
  14. # https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/window
  15. #
  16. # The original source code is subject to the terms of the Apache
  17. # 2.0 license, a copy of which can be found in the LICENSE file at the
  18. # root of this repository.
  19. # not supported yet
  20. halt
  21. mode cockroach
  22. statement ok
  23. CREATE TABLE kv (
  24. -- don't add column "a"
  25. k INT PRIMARY KEY,
  26. v INT,
  27. w INT,
  28. f FLOAT,
  29. d DECIMAL,
  30. s STRING,
  31. b BOOL,
  32. FAMILY (k, v, w, f, b),
  33. FAMILY (d),
  34. FAMILY (s)
  35. )
  36. statement OK
  37. INSERT INTO kv VALUES
  38. (1, 2, 3, 1.0, 1, 'a', true),
  39. (3, 4, 5, 2, 8, 'a', true),
  40. (5, NULL, 5, 9.9, -321, NULL, false),
  41. (6, 2, 3, 4.4, 4.4, 'b', true),
  42. (7, 2, 2, 6, 7.9, 'b', true),
  43. (8, 4, 2, 3, 3, 'A', false)
  44. query error window functions are not allowed in GROUP BY
  45. SELECT * FROM kv GROUP BY v, count(w) OVER ()
  46. query error window functions are not allowed in GROUP BY
  47. SELECT count(w) OVER () FROM kv GROUP BY 1
  48. query error window functions are not allowed in RETURNING
  49. INSERT INTO kv (k, v) VALUES (99, 100) RETURNING sum(v) OVER ()
  50. query error window functions are not allowed in LIMIT
  51. SELECT sum(v) FROM kv GROUP BY k LIMIT sum(v) OVER ()
  52. query error window functions are not allowed in OFFSET
  53. SELECT sum(v) FROM kv GROUP BY k LIMIT 1 OFFSET sum(v) OVER ()
  54. query error window functions are not allowed in VALUES
  55. INSERT INTO kv (k, v) VALUES (99, count(1) OVER ())
  56. query error window functions are not allowed in WHERE
  57. SELECT k FROM kv WHERE avg(k) OVER () > 1
  58. query error window functions are not allowed in HAVING
  59. SELECT 1 FROM kv GROUP BY 1 HAVING sum(1) OVER (PARTITION BY 1) > 1
  60. query R
  61. SELECT avg(k) OVER () FROM kv ORDER BY 1
  62. ----
  63. 5
  64. 5
  65. 5
  66. 5
  67. 5
  68. 5
  69. query R
  70. SELECT avg(k) OVER (PARTITION BY v) FROM kv ORDER BY 1
  71. ----
  72. 4.6666666666666666667
  73. 4.6666666666666666667
  74. 4.6666666666666666667
  75. 5
  76. 5.5
  77. 5.5
  78. query R
  79. SELECT avg(k) OVER (PARTITION BY w) FROM kv ORDER BY 1
  80. ----
  81. 3.5
  82. 3.5
  83. 4
  84. 4
  85. 7.5
  86. 7.5
  87. query R
  88. SELECT avg(k) OVER (PARTITION BY b) FROM kv ORDER BY 1
  89. ----
  90. 4.25
  91. 4.25
  92. 4.25
  93. 4.25
  94. 6.5
  95. 6.5
  96. query R
  97. SELECT avg(k) OVER (PARTITION BY w, b) FROM kv ORDER BY 1
  98. ----
  99. 3
  100. 3.5
  101. 3.5
  102. 5
  103. 7
  104. 8
  105. query R
  106. SELECT avg(k) OVER (PARTITION BY kv.*) FROM kv ORDER BY 1
  107. ----
  108. 1
  109. 3
  110. 5
  111. 6
  112. 7
  113. 8
  114. query R
  115. SELECT avg(k) OVER (ORDER BY w) FROM kv ORDER BY 1
  116. ----
  117. 5
  118. 5
  119. 5.5
  120. 5.5
  121. 7.5
  122. 7.5
  123. query R
  124. SELECT avg(k) OVER (ORDER BY b) FROM kv ORDER BY 1
  125. ----
  126. 5
  127. 5
  128. 5
  129. 5
  130. 6.5
  131. 6.5
  132. query R
  133. SELECT avg(k) OVER (ORDER BY w, b) FROM kv ORDER BY 1
  134. ----
  135. 5
  136. 5.4
  137. 5.5
  138. 5.5
  139. 7.5
  140. 8
  141. query R
  142. SELECT avg(k) OVER (ORDER BY 1-w) FROM kv ORDER BY 1
  143. ----
  144. 3.75
  145. 3.75
  146. 4
  147. 4
  148. 5
  149. 5
  150. query R
  151. SELECT avg(k) OVER (ORDER BY kv.*) FROM kv ORDER BY 1
  152. ----
  153. 1
  154. 2
  155. 3
  156. 3.75
  157. 4.4
  158. 5
  159. query R
  160. SELECT avg(k) OVER (ORDER BY w DESC) FROM kv ORDER BY 1
  161. ----
  162. 3.75
  163. 3.75
  164. 4
  165. 4
  166. 5
  167. 5
  168. query R
  169. SELECT avg(k) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  170. ----
  171. 4.6666666666666666667
  172. 4.6666666666666666667
  173. 5
  174. 5.5
  175. 7
  176. 8
  177. query R
  178. SELECT avg(k) OVER w FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
  179. ----
  180. 4.6666666666666666667
  181. 4.6666666666666666667
  182. 5
  183. 5.5
  184. 7
  185. 8
  186. query R
  187. SELECT avg(k) OVER (w) FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
  188. ----
  189. 4.6666666666666666667
  190. 4.6666666666666666667
  191. 5
  192. 5.5
  193. 7
  194. 8
  195. query R
  196. SELECT avg(k) OVER (w ORDER BY w) FROM kv WINDOW w AS (PARTITION BY v) ORDER BY 1
  197. ----
  198. 4.6666666666666666667
  199. 4.6666666666666666667
  200. 5
  201. 5.5
  202. 7
  203. 8
  204. query IIIRRTBR colnames
  205. SELECT *, avg(k) OVER (w ORDER BY w) FROM kv WINDOW w AS (PARTITION BY v) ORDER BY 1
  206. ----
  207. k v w f d s b avg
  208. 1 2 3 1 1 a true 4.6666666666666666667
  209. 3 4 5 2 8 a true 5.5
  210. 5 NULL 5 9.9 -321 NULL false 5
  211. 6 2 3 4.4 4.4 b true 4.6666666666666666667
  212. 7 2 2 6 7.9 b true 7
  213. 8 4 2 3 3 A false 8
  214. query IIIRRTBR colnames
  215. SELECT *, avg(k) OVER w FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY avg(k) OVER w, k
  216. ----
  217. k v w f d s b avg
  218. 1 2 3 1 1 a true 4.6666666666666666667
  219. 6 2 3 4.4 4.4 b true 4.6666666666666666667
  220. 5 NULL 5 9.9 -321 NULL false 5
  221. 3 4 5 2 8 a true 5.5
  222. 7 2 2 6 7.9 b true 7
  223. 8 4 2 3 3 A false 8
  224. query IIIRRTB colnames
  225. SELECT * FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY avg(k) OVER w DESC, k
  226. ----
  227. k v w f d s b
  228. 8 4 2 3 3 A false
  229. 7 2 2 6 7.9 b true
  230. 3 4 5 2 8 a true
  231. 5 NULL 5 9.9 -321 NULL false
  232. 1 2 3 1 1 a true
  233. 6 2 3 4.4 4.4 b true
  234. query error window "w" is already defined
  235. SELECT avg(k) OVER w FROM kv WINDOW w AS (), w AS ()
  236. query error window "x" does not exist
  237. SELECT avg(k) OVER x FROM kv WINDOW w AS ()
  238. query error window "x" does not exist
  239. SELECT avg(k) OVER (x) FROM kv WINDOW w AS ()
  240. query error cannot override PARTITION BY clause of window "w"
  241. SELECT avg(k) OVER (w PARTITION BY v) FROM kv WINDOW w AS ()
  242. query error cannot override PARTITION BY clause of window "w"
  243. SELECT avg(k) OVER (w PARTITION BY v) FROM kv WINDOW w AS (PARTITION BY v)
  244. query error cannot override ORDER BY clause of window "w"
  245. SELECT avg(k) OVER (w ORDER BY v) FROM kv WINDOW w AS (ORDER BY v)
  246. query error column "a" does not exist
  247. SELECT avg(k) OVER (PARTITION BY a) FROM kv
  248. query error column "a" does not exist
  249. SELECT avg(k) OVER (ORDER BY a) FROM kv
  250. # TODO(justin): this should have pgcode 42803 but CBO currently doesn't get
  251. # it right.
  252. query error window functions are not allowed in aggregate
  253. SELECT avg(avg(k) OVER ()) FROM kv ORDER BY 1
  254. query R
  255. SELECT avg(avg(k)) OVER () FROM kv ORDER BY 1
  256. ----
  257. 5
  258. query RR
  259. SELECT avg(k) OVER (), avg(v) OVER () FROM kv ORDER BY 1
  260. ----
  261. 5 2.3333333333333333333
  262. 5 2.3333333333333333333
  263. 5 2.3333333333333333333
  264. 5 2.3333333333333333333
  265. 5 2.3333333333333333333
  266. 5 2.3333333333333333333
  267. query error OVER specified, but now\(\) is neither a window function nor an aggregate function
  268. SELECT now() OVER () FROM kv ORDER BY 1
  269. query error window function rank\(\) requires an OVER clause
  270. SELECT rank() FROM kv
  271. query error unknown signature: rank\(int\)
  272. SELECT rank(22) FROM kv
  273. query error window function calls cannot be nested
  274. SELECT avg(avg(k) OVER ()) OVER () FROM kv ORDER BY 1
  275. query error OVER specified, but round\(\) is neither a window function nor an aggregate function
  276. SELECT round(avg(k) OVER ()) OVER () FROM kv ORDER BY 1
  277. query R
  278. SELECT round(avg(k) OVER (PARTITION BY v ORDER BY w)) FROM kv ORDER BY 1
  279. ----
  280. 5
  281. 5
  282. 5
  283. 6
  284. 7
  285. 8
  286. query R
  287. SELECT avg(f) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  288. ----
  289. 2.5
  290. 3
  291. 3.8
  292. 3.8
  293. 6
  294. 9.9
  295. query R
  296. SELECT avg(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  297. ----
  298. -321
  299. 3
  300. 4.4333333333333333333
  301. 4.4333333333333333333
  302. 5.5
  303. 7.9
  304. query R
  305. SELECT avg(d) OVER (PARTITION BY w ORDER BY v) FROM kv ORDER BY 1
  306. ----
  307. -321
  308. -156.5
  309. 2.7
  310. 2.7
  311. 5.45
  312. 7.9
  313. query R
  314. SELECT (avg(d) OVER (PARTITION BY v ORDER BY w) + avg(d) OVER (PARTITION BY v ORDER BY w)) FROM kv ORDER BY 1
  315. ----
  316. -642
  317. 6
  318. 8.8666666666666666666
  319. 8.8666666666666666666
  320. 11.0
  321. 15.8
  322. query R
  323. SELECT (avg(d) OVER (PARTITION BY v ORDER BY w) + avg(d) OVER (PARTITION BY w ORDER BY v)) FROM kv ORDER BY 1
  324. ----
  325. -642
  326. -151.0
  327. 7.1333333333333333333
  328. 7.1333333333333333333
  329. 8.45
  330. 15.8
  331. query R
  332. SELECT avg(d) OVER (PARTITION BY v) FROM kv WHERE FALSE ORDER BY 1
  333. ----
  334. query R
  335. SELECT avg(d) OVER (PARTITION BY v, v, v, v, v, v, v, v, v, v) FROM kv WHERE FALSE ORDER BY 1
  336. ----
  337. query R
  338. SELECT avg(d) OVER (PARTITION BY v, v, v, v, v, v, v, v, v, v) FROM kv WHERE k = 3 ORDER BY 1
  339. ----
  340. 8
  341. query IT
  342. SELECT k, concat_agg(s) OVER (PARTITION BY k ORDER BY w) FROM kv ORDER BY 1
  343. ----
  344. 1 a
  345. 3 a
  346. 5 NULL
  347. 6 b
  348. 7 b
  349. 8 A
  350. query IT
  351. SELECT k, concat_agg(s) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  352. ----
  353. 1 ba
  354. 3 Aa
  355. 5 NULL
  356. 6 bab
  357. 7 b
  358. 8 A
  359. query IB
  360. SELECT k, bool_and(b) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  361. ----
  362. 1 true
  363. 3 false
  364. 5 false
  365. 6 true
  366. 7 true
  367. 8 false
  368. query IB
  369. SELECT k, bool_or(b) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  370. ----
  371. 1 true
  372. 3 true
  373. 5 false
  374. 6 true
  375. 7 true
  376. 8 false
  377. query II
  378. SELECT k, count(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  379. ----
  380. 1 3
  381. 3 2
  382. 5 1
  383. 6 3
  384. 7 1
  385. 8 1
  386. query II
  387. SELECT k, count(*) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  388. ----
  389. 1 3
  390. 3 2
  391. 5 1
  392. 6 3
  393. 7 1
  394. 8 1
  395. query IR
  396. SELECT k, max(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  397. ----
  398. 1 7.9
  399. 3 8
  400. 5 -321
  401. 6 7.9
  402. 7 7.9
  403. 8 3
  404. query IR
  405. SELECT k, min(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  406. ----
  407. 1 1
  408. 3 3
  409. 5 -321
  410. 6 1
  411. 7 7.9
  412. 8 3
  413. query IR
  414. SELECT k, pow(max(d) OVER (PARTITION BY v), k::DECIMAL) FROM kv ORDER BY 1
  415. ----
  416. 1 7.9
  417. 3 512
  418. 5 -3408200705601
  419. 6 243087.455521
  420. 7 1920390.8986159
  421. 8 16777216
  422. query IR
  423. SELECT k, max(d) OVER (PARTITION BY v) FROM kv ORDER BY 1
  424. ----
  425. 1 7.9
  426. 3 8
  427. 5 -321
  428. 6 7.9
  429. 7 7.9
  430. 8 8
  431. query IR
  432. SELECT k, sum(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  433. ----
  434. 1 13.3
  435. 3 11
  436. 5 -321
  437. 6 13.3
  438. 7 7.9
  439. 8 3
  440. query IR
  441. SELECT k, variance(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  442. ----
  443. 1 11.903333333333333333
  444. 3 12.5
  445. 5 NULL
  446. 6 11.903333333333333333
  447. 7 NULL
  448. 8 NULL
  449. query IR
  450. SELECT k, stddev(d) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  451. ----
  452. 1 3.4501207708330056852
  453. 3 3.5355339059327376220
  454. 5 NULL
  455. 6 3.4501207708330056852
  456. 7 NULL
  457. 8 NULL
  458. query IR
  459. SELECT k, stddev(d) OVER w FROM kv WINDOW w as (PARTITION BY v) ORDER BY variance(d) OVER w, k
  460. ----
  461. 5 NULL
  462. 1 3.4501207708330056852
  463. 6 3.4501207708330056852
  464. 7 3.4501207708330056852
  465. 3 3.5355339059327376220
  466. 8 3.5355339059327376220
  467. query IRIR
  468. SELECT * FROM (SELECT k, d, v, stddev(d) OVER (PARTITION BY v) FROM kv) sub ORDER BY variance(d) OVER (PARTITION BY v), k
  469. ----
  470. 5 -321 NULL NULL
  471. 1 1 2 3.4501207708330056852
  472. 6 4.4 2 3.4501207708330056852
  473. 7 7.9 2 3.4501207708330056852
  474. 3 8 4 3.5355339059327376220
  475. 8 3 4 3.5355339059327376220
  476. query IR
  477. 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
  478. ----
  479. 5 NULL
  480. 1 3.4501207708330056852
  481. 3 3.5355339059327376220
  482. 6 3.5355339059327376220
  483. 7 3.5355339059327376220
  484. 8 3.5355339059327376220
  485. query IR
  486. 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
  487. ----
  488. 1 3.5355339059327376220
  489. 3 3.5355339059327376220
  490. 5 3.5355339059327376220
  491. 6 3.5355339059327376220
  492. 7 3.5355339059327376220
  493. 8 3.5355339059327376220
  494. query IRIII
  495. 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
  496. ----
  497. 1 4 3 3 2
  498. 3 6 5 6 4
  499. 5 7.3333333333333333333 5 NULL NULL
  500. 6 8 3 6 2
  501. 7 8.6 2 7 2
  502. 8 9.3333333333333333333 2 10 4
  503. query TIRRI
  504. 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
  505. ----
  506. a 4 10.9666666666666666667 3 2
  507. a 8 19.86 10 4
  508. NULL 10 -29.45 -319 NULL
  509. b 9 14.075 6.4 2
  510. b 9 9.9 9.9 2
  511. A 10 9.45 5 4
  512. query IIII
  513. 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
  514. ----
  515. 1 5 7 3
  516. 3 9 17 4
  517. 5 NULL NULL 12
  518. 6 5 14 8
  519. 7 4 18 12
  520. 8 6 20 7
  521. query II
  522. 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
  523. ----
  524. 5 2
  525. 7 2
  526. NULL 2
  527. 7 4
  528. 8 6
  529. 11 4
  530. query RIR
  531. 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
  532. ----
  533. 8 5 NULL
  534. 26 9 5
  535. -615.1 NULL NULL
  536. 20.8 5 6
  537. 21.9 4 7
  538. 22 6 -311
  539. query RI
  540. 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
  541. ----
  542. 8 NULL
  543. 9 NULL
  544. NULL NULL
  545. 9 7
  546. 10 NULL
  547. 12 20
  548. query R
  549. 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
  550. ----
  551. 13.9
  552. 71.10
  553. -2590.156074766355140186916
  554. -1376.87272727272727272728
  555. -822.2405063291139240505
  556. -753.9999999999999999998
  557. query R
  558. 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
  559. ----
  560. 16.5
  561. 32.6666666666666666667
  562. 128.4
  563. query IRRIRIR
  564. 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
  565. ----
  566. 1 1 3.9666666666666666667 3 1 1 10
  567. 3 4.5 4.86 5 3 2 16.4
  568. 5 -104 -49.45 6 12.9 3 26.3
  569. 6 -76.9 4.075 4 17.3 4 14.4
  570. 7 -59.94 7.9 1 23.3 5 6
  571. 8 -49.45 5.45 2 26.3 6 9
  572. query R
  573. 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
  574. ----
  575. 43
  576. 22
  577. -3088
  578. -1874
  579. -385
  580. -372
  581. query RR
  582. SELECT avg(k) OVER w, avg(k) OVER w + 1 FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY k
  583. ----
  584. 4.6666666666666666667 5.6666666666666666667
  585. 5.5 6.5
  586. 5 6
  587. 4.6666666666666666667 5.6666666666666666667
  588. 7 8
  589. 8 9
  590. statement OK
  591. INSERT INTO kv VALUES
  592. (9, 2, 9, .1, DEFAULT, DEFAULT, DEFAULT),
  593. (10, 4, 9, .2, DEFAULT, DEFAULT, DEFAULT),
  594. (11, NULL, 9, .3, DEFAULT, DEFAULT, DEFAULT)
  595. query II
  596. SELECT k, row_number() OVER (ORDER BY k) FROM kv ORDER BY 1
  597. ----
  598. 1 1
  599. 3 2
  600. 5 3
  601. 6 4
  602. 7 5
  603. 8 6
  604. 9 7
  605. 10 8
  606. 11 9
  607. query III
  608. SELECT k, v, row_number() OVER (PARTITION BY v ORDER BY k) FROM kv ORDER BY 1
  609. ----
  610. 1 2 1
  611. 3 4 1
  612. 5 NULL 1
  613. 6 2 2
  614. 7 2 3
  615. 8 4 2
  616. 9 2 4
  617. 10 4 3
  618. 11 NULL 2
  619. query IIII
  620. SELECT k, v, w, row_number() OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  621. ----
  622. 1 2 3 2
  623. 3 4 5 2
  624. 5 NULL 5 1
  625. 6 2 3 3
  626. 7 2 2 1
  627. 8 4 2 1
  628. 9 2 9 4
  629. 10 4 9 3
  630. 11 NULL 9 2
  631. query IIII
  632. SELECT k, v, w, v - w + 2 + row_number() OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  633. ----
  634. 1 2 3 3
  635. 3 4 5 3
  636. 5 NULL 5 NULL
  637. 6 2 3 4
  638. 7 2 2 3
  639. 8 4 2 5
  640. 9 2 9 -1
  641. 10 4 9 0
  642. 11 NULL 9 NULL
  643. query II
  644. SELECT k, row_number() OVER (PARTITION BY k) FROM kv ORDER BY 1
  645. ----
  646. 1 1
  647. 3 1
  648. 5 1
  649. 6 1
  650. 7 1
  651. 8 1
  652. 9 1
  653. 10 1
  654. 11 1
  655. query IIII
  656. SELECT k, v, w, v - w + 2 + row_number() OVER (PARTITION BY v, k ORDER BY w) FROM kv ORDER BY 1
  657. ----
  658. 1 2 3 2
  659. 3 4 5 2
  660. 5 NULL 5 NULL
  661. 6 2 3 2
  662. 7 2 2 3
  663. 8 4 2 5
  664. 9 2 9 -4
  665. 10 4 9 -2
  666. 11 NULL 9 NULL
  667. query RIII
  668. SELECT avg(k), max(v), min(w), 2 + row_number() OVER () FROM kv ORDER BY 1
  669. ----
  670. 6.6666666666666666667 4 2 3
  671. query II
  672. SELECT k, rank() OVER () FROM kv ORDER BY 1
  673. ----
  674. 1 1
  675. 3 1
  676. 5 1
  677. 6 1
  678. 7 1
  679. 8 1
  680. 9 1
  681. 10 1
  682. 11 1
  683. query III
  684. SELECT k, v, rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
  685. ----
  686. 1 2 1
  687. 3 4 1
  688. 5 NULL 1
  689. 6 2 1
  690. 7 2 1
  691. 8 4 1
  692. 9 2 1
  693. 10 4 1
  694. 11 NULL 1
  695. query IIII
  696. SELECT k, v, w, rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  697. ----
  698. 1 2 3 2
  699. 3 4 5 2
  700. 5 NULL 5 1
  701. 6 2 3 2
  702. 7 2 2 1
  703. 8 4 2 1
  704. 9 2 9 4
  705. 10 4 9 3
  706. 11 NULL 9 2
  707. query IRI
  708. SELECT k, (rank() OVER w + avg(w) OVER w), k FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
  709. ----
  710. 1 4.6666666666666666667 1
  711. 3 5.5 3
  712. 5 6 5
  713. 6 4.6666666666666666667 6
  714. 7 3 7
  715. 8 3 8
  716. 9 8.25 9
  717. 10 8.3333333333333333333 10
  718. 11 9 11
  719. query IRI
  720. SELECT k, (avg(w) OVER w + rank() OVER w), k FROM kv WINDOW w AS (PARTITION BY v ORDER BY w) ORDER BY 1
  721. ----
  722. 1 4.6666666666666666667 1
  723. 3 5.5 3
  724. 5 6 5
  725. 6 4.6666666666666666667 6
  726. 7 3 7
  727. 8 3 8
  728. 9 8.25 9
  729. 10 8.3333333333333333333 10
  730. 11 9 11
  731. query II
  732. SELECT k, dense_rank() OVER () FROM kv ORDER BY 1
  733. ----
  734. 1 1
  735. 3 1
  736. 5 1
  737. 6 1
  738. 7 1
  739. 8 1
  740. 9 1
  741. 10 1
  742. 11 1
  743. query III
  744. SELECT k, v, dense_rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
  745. ----
  746. 1 2 1
  747. 3 4 1
  748. 5 NULL 1
  749. 6 2 1
  750. 7 2 1
  751. 8 4 1
  752. 9 2 1
  753. 10 4 1
  754. 11 NULL 1
  755. query IIII
  756. SELECT k, v, w, dense_rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  757. ----
  758. 1 2 3 2
  759. 3 4 5 2
  760. 5 NULL 5 1
  761. 6 2 3 2
  762. 7 2 2 1
  763. 8 4 2 1
  764. 9 2 9 3
  765. 10 4 9 3
  766. 11 NULL 9 2
  767. query IR
  768. SELECT k, percent_rank() OVER () FROM kv ORDER BY 1
  769. ----
  770. 1 0
  771. 3 0
  772. 5 0
  773. 6 0
  774. 7 0
  775. 8 0
  776. 9 0
  777. 10 0
  778. 11 0
  779. query IIR
  780. SELECT k, v, percent_rank() OVER (PARTITION BY v) FROM kv ORDER BY 1
  781. ----
  782. 1 2 0
  783. 3 4 0
  784. 5 NULL 0
  785. 6 2 0
  786. 7 2 0
  787. 8 4 0
  788. 9 2 0
  789. 10 4 0
  790. 11 NULL 0
  791. query IIIR
  792. SELECT k, v, w, percent_rank() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  793. ----
  794. 1 2 3 0.333333333333333
  795. 3 4 5 0.5
  796. 5 NULL 5 0
  797. 6 2 3 0.333333333333333
  798. 7 2 2 0
  799. 8 4 2 0
  800. 9 2 9 1
  801. 10 4 9 1
  802. 11 NULL 9 1
  803. query IR
  804. SELECT k, cume_dist() OVER () FROM kv ORDER BY 1
  805. ----
  806. 1 1
  807. 3 1
  808. 5 1
  809. 6 1
  810. 7 1
  811. 8 1
  812. 9 1
  813. 10 1
  814. 11 1
  815. query IIR
  816. SELECT k, v, cume_dist() OVER (PARTITION BY v) FROM kv ORDER BY 1
  817. ----
  818. 1 2 1
  819. 3 4 1
  820. 5 NULL 1
  821. 6 2 1
  822. 7 2 1
  823. 8 4 1
  824. 9 2 1
  825. 10 4 1
  826. 11 NULL 1
  827. query IIIR
  828. SELECT k, v, w, cume_dist() OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  829. ----
  830. 1 2 3 0.75
  831. 3 4 5 0.666666666666667
  832. 5 NULL 5 0.5
  833. 6 2 3 0.75
  834. 7 2 2 0.25
  835. 8 4 2 0.333333333333333
  836. 9 2 9 1
  837. 10 4 9 1
  838. 11 NULL 9 1
  839. query error argument of ntile\(\) must be greater than zero
  840. SELECT k, ntile(-10) OVER () FROM kv ORDER BY 1
  841. query error argument of ntile\(\) must be greater than zero
  842. SELECT k, ntile(0) OVER () FROM kv ORDER BY 1
  843. query II
  844. SELECT k, ntile(NULL::INT) OVER () FROM kv ORDER BY 1
  845. ----
  846. 1 NULL
  847. 3 NULL
  848. 5 NULL
  849. 6 NULL
  850. 7 NULL
  851. 8 NULL
  852. 9 NULL
  853. 10 NULL
  854. 11 NULL
  855. query II
  856. SELECT k, ntile(1) OVER () FROM kv ORDER BY 1
  857. ----
  858. 1 1
  859. 3 1
  860. 5 1
  861. 6 1
  862. 7 1
  863. 8 1
  864. 9 1
  865. 10 1
  866. 11 1
  867. query II
  868. SELECT k, ntile(4) OVER (ORDER BY k) FROM kv ORDER BY 1
  869. ----
  870. 1 1
  871. 3 1
  872. 5 1
  873. 6 2
  874. 7 2
  875. 8 3
  876. 9 3
  877. 10 4
  878. 11 4
  879. query II
  880. SELECT k, ntile(20) OVER (ORDER BY k) FROM kv ORDER BY 1
  881. ----
  882. 1 1
  883. 3 2
  884. 5 3
  885. 6 4
  886. 7 5
  887. 8 6
  888. 9 7
  889. 10 8
  890. 11 9
  891. # The value of 'w' in the first row will be 3.
  892. query II
  893. SELECT k, ntile(w) OVER (ORDER BY k) FROM kv ORDER BY 1
  894. ----
  895. 1 1
  896. 3 1
  897. 5 1
  898. 6 2
  899. 7 2
  900. 8 2
  901. 9 3
  902. 10 3
  903. 11 3
  904. query III
  905. SELECT k, v, ntile(3) OVER (PARTITION BY v ORDER BY k) FROM kv ORDER BY 1
  906. ----
  907. 1 2 1
  908. 3 4 1
  909. 5 NULL 1
  910. 6 2 1
  911. 7 2 2
  912. 8 4 2
  913. 9 2 3
  914. 10 4 3
  915. 11 NULL 2
  916. query IIII
  917. SELECT k, v, w, ntile(6) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  918. ----
  919. 1 2 3 2
  920. 3 4 5 2
  921. 5 NULL 5 1
  922. 6 2 3 3
  923. 7 2 2 1
  924. 8 4 2 1
  925. 9 2 9 4
  926. 10 4 9 3
  927. 11 NULL 9 2
  928. query II
  929. SELECT k, ntile(w) OVER (PARTITION BY k) FROM kv ORDER BY 1
  930. ----
  931. 1 1
  932. 3 1
  933. 5 1
  934. 6 1
  935. 7 1
  936. 8 1
  937. 9 1
  938. 10 1
  939. 11 1
  940. query III
  941. SELECT k, v, ntile(3) OVER (PARTITION BY v, k) FROM kv ORDER BY 1
  942. ----
  943. 1 2 1
  944. 3 4 1
  945. 5 NULL 1
  946. 6 2 1
  947. 7 2 1
  948. 8 4 1
  949. 9 2 1
  950. 10 4 1
  951. 11 NULL 1
  952. query IIII
  953. SELECT k, v, w, ntile(6) OVER (PARTITION BY v, k ORDER BY w) FROM kv ORDER BY 1
  954. ----
  955. 1 2 3 1
  956. 3 4 5 1
  957. 5 NULL 5 1
  958. 6 2 3 1
  959. 7 2 2 1
  960. 8 4 2 1
  961. 9 2 9 1
  962. 10 4 9 1
  963. 11 NULL 9 1
  964. query II
  965. SELECT k, lag(9) OVER (ORDER BY k) FROM kv ORDER BY 1
  966. ----
  967. 1 NULL
  968. 3 9
  969. 5 9
  970. 6 9
  971. 7 9
  972. 8 9
  973. 9 9
  974. 10 9
  975. 11 9
  976. query II
  977. SELECT k, lead(9) OVER (ORDER BY k) FROM kv ORDER BY 1
  978. ----
  979. 1 9
  980. 3 9
  981. 5 9
  982. 6 9
  983. 7 9
  984. 8 9
  985. 9 9
  986. 10 9
  987. 11 NULL
  988. query II
  989. SELECT k, lag(k) OVER (ORDER BY k) FROM kv ORDER BY 1
  990. ----
  991. 1 NULL
  992. 3 1
  993. 5 3
  994. 6 5
  995. 7 6
  996. 8 7
  997. 9 8
  998. 10 9
  999. 11 10
  1000. query II
  1001. SELECT k, lag(k) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  1002. ----
  1003. 1 7
  1004. 3 8
  1005. 5 NULL
  1006. 6 1
  1007. 7 NULL
  1008. 8 NULL
  1009. 9 6
  1010. 10 3
  1011. 11 5
  1012. query II
  1013. SELECT k, lead(k) OVER (ORDER BY k) FROM kv ORDER BY 1
  1014. ----
  1015. 1 3
  1016. 3 5
  1017. 5 6
  1018. 6 7
  1019. 7 8
  1020. 8 9
  1021. 9 10
  1022. 10 11
  1023. 11 NULL
  1024. query II
  1025. SELECT k, lead(k) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  1026. ----
  1027. 1 6
  1028. 3 10
  1029. 5 11
  1030. 6 9
  1031. 7 1
  1032. 8 3
  1033. 9 NULL
  1034. 10 NULL
  1035. 11 NULL
  1036. query II
  1037. SELECT k, lag(k, 3) OVER (ORDER BY k) FROM kv ORDER BY 1
  1038. ----
  1039. 1 NULL
  1040. 3 NULL
  1041. 5 NULL
  1042. 6 1
  1043. 7 3
  1044. 8 5
  1045. 9 6
  1046. 10 7
  1047. 11 8
  1048. query II
  1049. SELECT k, lag(k, 3) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  1050. ----
  1051. 1 NULL
  1052. 3 NULL
  1053. 5 NULL
  1054. 6 NULL
  1055. 7 NULL
  1056. 8 NULL
  1057. 9 7
  1058. 10 NULL
  1059. 11 NULL
  1060. query II
  1061. SELECT k, lead(k, 3) OVER (ORDER BY k) FROM kv ORDER BY 1
  1062. ----
  1063. 1 6
  1064. 3 7
  1065. 5 8
  1066. 6 9
  1067. 7 10
  1068. 8 11
  1069. 9 NULL
  1070. 10 NULL
  1071. 11 NULL
  1072. query II
  1073. SELECT k, lead(k, 3) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  1074. ----
  1075. 1 NULL
  1076. 3 NULL
  1077. 5 NULL
  1078. 6 NULL
  1079. 7 9
  1080. 8 NULL
  1081. 9 NULL
  1082. 10 NULL
  1083. 11 NULL
  1084. query II
  1085. SELECT k, lag(k, -5) OVER (ORDER BY k) FROM kv ORDER BY 1
  1086. ----
  1087. 1 8
  1088. 3 9
  1089. 5 10
  1090. 6 11
  1091. 7 NULL
  1092. 8 NULL
  1093. 9 NULL
  1094. 10 NULL
  1095. 11 NULL
  1096. query II
  1097. SELECT k, lead(k, -5) OVER (ORDER BY k) FROM kv ORDER BY 1
  1098. ----
  1099. 1 NULL
  1100. 3 NULL
  1101. 5 NULL
  1102. 6 NULL
  1103. 7 NULL
  1104. 8 1
  1105. 9 3
  1106. 10 5
  1107. 11 6
  1108. query II
  1109. SELECT k, lag(k, 0) OVER () FROM kv ORDER BY 1
  1110. ----
  1111. 1 1
  1112. 3 3
  1113. 5 5
  1114. 6 6
  1115. 7 7
  1116. 8 8
  1117. 9 9
  1118. 10 10
  1119. 11 11
  1120. query II
  1121. SELECT k, lead(k, 0) OVER () FROM kv ORDER BY 1
  1122. ----
  1123. 1 1
  1124. 3 3
  1125. 5 5
  1126. 6 6
  1127. 7 7
  1128. 8 8
  1129. 9 9
  1130. 10 10
  1131. 11 11
  1132. query II
  1133. SELECT k, lag(k, NULL::INT) OVER () FROM kv ORDER BY 1
  1134. ----
  1135. 1 NULL
  1136. 3 NULL
  1137. 5 NULL
  1138. 6 NULL
  1139. 7 NULL
  1140. 8 NULL
  1141. 9 NULL
  1142. 10 NULL
  1143. 11 NULL
  1144. query II
  1145. SELECT k, lead(k, NULL::INT) OVER () FROM kv ORDER BY 1
  1146. ----
  1147. 1 NULL
  1148. 3 NULL
  1149. 5 NULL
  1150. 6 NULL
  1151. 7 NULL
  1152. 8 NULL
  1153. 9 NULL
  1154. 10 NULL
  1155. 11 NULL
  1156. query II
  1157. SELECT k, lag(k, w) OVER (ORDER BY k) FROM kv ORDER BY 1
  1158. ----
  1159. 1 NULL
  1160. 3 NULL
  1161. 5 NULL
  1162. 6 1
  1163. 7 5
  1164. 8 6
  1165. 9 NULL
  1166. 10 NULL
  1167. 11 NULL
  1168. query II
  1169. SELECT k, lag(k, w) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  1170. ----
  1171. 1 NULL
  1172. 3 NULL
  1173. 5 NULL
  1174. 6 NULL
  1175. 7 NULL
  1176. 8 NULL
  1177. 9 NULL
  1178. 10 NULL
  1179. 11 NULL
  1180. query II
  1181. SELECT k, lead(k, w) OVER (ORDER BY k) FROM kv ORDER BY 1
  1182. ----
  1183. 1 6
  1184. 3 9
  1185. 5 10
  1186. 6 9
  1187. 7 9
  1188. 8 10
  1189. 9 NULL
  1190. 10 NULL
  1191. 11 NULL
  1192. query II
  1193. SELECT k, lead(k, w) OVER (PARTITION BY v ORDER BY w, k) FROM kv ORDER BY 1
  1194. ----
  1195. 1 NULL
  1196. 3 NULL
  1197. 5 NULL
  1198. 6 NULL
  1199. 7 6
  1200. 8 10
  1201. 9 NULL
  1202. 10 NULL
  1203. 11 NULL
  1204. query error unknown signature: lag\(int, int, string\)
  1205. SELECT k, lag(k, 1, 'FOO') OVER () FROM kv ORDER BY 1
  1206. query error unknown signature: lead\(int, int, string\)
  1207. SELECT k, lead(k, 1, 'FOO') OVER () FROM kv ORDER BY 1
  1208. query error unknown signature: lag\(int, int, string\)
  1209. SELECT k, lag(k, 1, s) OVER () FROM kv ORDER BY 1
  1210. query error unknown signature: lead\(int, int, string\)
  1211. SELECT k, lead(k, 1, s) OVER () FROM kv ORDER BY 1
  1212. query II
  1213. SELECT k, lag(k, 3, -99) OVER (ORDER BY k) FROM kv ORDER BY 1
  1214. ----
  1215. 1 -99
  1216. 3 -99
  1217. 5 -99
  1218. 6 1
  1219. 7 3
  1220. 8 5
  1221. 9 6
  1222. 10 7
  1223. 11 8
  1224. query II
  1225. SELECT k, lead(k, 3, -99) OVER (ORDER BY k) FROM kv ORDER BY 1
  1226. ----
  1227. 1 6
  1228. 3 7
  1229. 5 8
  1230. 6 9
  1231. 7 10
  1232. 8 11
  1233. 9 -99
  1234. 10 -99
  1235. 11 -99
  1236. query II
  1237. SELECT k, lag(k, 3, v) OVER (ORDER BY k) FROM kv ORDER BY 1
  1238. ----
  1239. 1 2
  1240. 3 4
  1241. 5 NULL
  1242. 6 1
  1243. 7 3
  1244. 8 5
  1245. 9 6
  1246. 10 7
  1247. 11 8
  1248. query II
  1249. SELECT k, lead(k, 3, v) OVER (ORDER BY k) FROM kv ORDER BY 1
  1250. ----
  1251. 1 6
  1252. 3 7
  1253. 5 8
  1254. 6 9
  1255. 7 10
  1256. 8 11
  1257. 9 2
  1258. 10 4
  1259. 11 NULL
  1260. query II
  1261. 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
  1262. ----
  1263. 1 9
  1264. 3 12
  1265. 5 13
  1266. 6 12
  1267. 7 12
  1268. 8 12
  1269. 9 5
  1270. 10 9
  1271. 11 NULL
  1272. query II
  1273. SELECT k, lag(k) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1274. ----
  1275. 1 NULL
  1276. 3 NULL
  1277. 5 NULL
  1278. 6 NULL
  1279. 7 NULL
  1280. 8 NULL
  1281. 9 NULL
  1282. 10 NULL
  1283. 11 NULL
  1284. query II
  1285. SELECT k, lead(k) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1286. ----
  1287. 1 NULL
  1288. 3 NULL
  1289. 5 NULL
  1290. 6 NULL
  1291. 7 NULL
  1292. 8 NULL
  1293. 9 NULL
  1294. 10 NULL
  1295. 11 NULL
  1296. query II
  1297. SELECT k, lag(k, 0) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1298. ----
  1299. 1 1
  1300. 3 3
  1301. 5 5
  1302. 6 6
  1303. 7 7
  1304. 8 8
  1305. 9 9
  1306. 10 10
  1307. 11 11
  1308. query II
  1309. SELECT k, lead(k, 0) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1310. ----
  1311. 1 1
  1312. 3 3
  1313. 5 5
  1314. 6 6
  1315. 7 7
  1316. 8 8
  1317. 9 9
  1318. 10 10
  1319. 11 11
  1320. query II
  1321. SELECT k, lag(k, -5) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1322. ----
  1323. 1 NULL
  1324. 3 NULL
  1325. 5 NULL
  1326. 6 NULL
  1327. 7 NULL
  1328. 8 NULL
  1329. 9 NULL
  1330. 10 NULL
  1331. 11 NULL
  1332. query II
  1333. SELECT k, lead(k, -5) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1334. ----
  1335. 1 NULL
  1336. 3 NULL
  1337. 5 NULL
  1338. 6 NULL
  1339. 7 NULL
  1340. 8 NULL
  1341. 9 NULL
  1342. 10 NULL
  1343. 11 NULL
  1344. query II
  1345. SELECT k, lag(k, w - w) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1346. ----
  1347. 1 1
  1348. 3 3
  1349. 5 5
  1350. 6 6
  1351. 7 7
  1352. 8 8
  1353. 9 9
  1354. 10 10
  1355. 11 11
  1356. query II
  1357. SELECT k, lead(k, w - w) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1358. ----
  1359. 1 1
  1360. 3 3
  1361. 5 5
  1362. 6 6
  1363. 7 7
  1364. 8 8
  1365. 9 9
  1366. 10 10
  1367. 11 11
  1368. query II
  1369. SELECT k, lag(k, 3, -99) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1370. ----
  1371. 1 -99
  1372. 3 -99
  1373. 5 -99
  1374. 6 -99
  1375. 7 -99
  1376. 8 -99
  1377. 9 -99
  1378. 10 -99
  1379. 11 -99
  1380. query II
  1381. SELECT k, lead(k, 3, -99) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1382. ----
  1383. 1 -99
  1384. 3 -99
  1385. 5 -99
  1386. 6 -99
  1387. 7 -99
  1388. 8 -99
  1389. 9 -99
  1390. 10 -99
  1391. 11 -99
  1392. query II
  1393. SELECT k, lag(k, 3, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1394. ----
  1395. 1 2
  1396. 3 4
  1397. 5 NULL
  1398. 6 2
  1399. 7 2
  1400. 8 4
  1401. 9 2
  1402. 10 4
  1403. 11 NULL
  1404. query II
  1405. SELECT k, lead(k, 3, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1406. ----
  1407. 1 2
  1408. 3 4
  1409. 5 NULL
  1410. 6 2
  1411. 7 2
  1412. 8 4
  1413. 9 2
  1414. 10 4
  1415. 11 NULL
  1416. query II
  1417. SELECT k, first_value(NULL::INT) OVER () FROM kv ORDER BY 1
  1418. ----
  1419. 1 NULL
  1420. 3 NULL
  1421. 5 NULL
  1422. 6 NULL
  1423. 7 NULL
  1424. 8 NULL
  1425. 9 NULL
  1426. 10 NULL
  1427. 11 NULL
  1428. query II
  1429. SELECT k, first_value(1) OVER () FROM kv ORDER BY 1
  1430. ----
  1431. 1 1
  1432. 3 1
  1433. 5 1
  1434. 6 1
  1435. 7 1
  1436. 8 1
  1437. 9 1
  1438. 10 1
  1439. 11 1
  1440. query IR
  1441. SELECT k, first_value(199.9 * 23.3) OVER () FROM kv ORDER BY 1
  1442. ----
  1443. 1 4657.67
  1444. 3 4657.67
  1445. 5 4657.67
  1446. 6 4657.67
  1447. 7 4657.67
  1448. 8 4657.67
  1449. 9 4657.67
  1450. 10 4657.67
  1451. 11 4657.67
  1452. query II
  1453. SELECT k, first_value(v) OVER (ORDER BY k) FROM kv ORDER BY 1
  1454. ----
  1455. 1 2
  1456. 3 2
  1457. 5 2
  1458. 6 2
  1459. 7 2
  1460. 8 2
  1461. 9 2
  1462. 10 2
  1463. 11 2
  1464. query IIII
  1465. SELECT k, v, w, first_value(w) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  1466. ----
  1467. 1 2 3 2
  1468. 3 4 5 2
  1469. 5 NULL 5 5
  1470. 6 2 3 2
  1471. 7 2 2 2
  1472. 8 4 2 2
  1473. 9 2 9 2
  1474. 10 4 9 2
  1475. 11 NULL 9 5
  1476. query IIII
  1477. SELECT k, v, w, first_value(w) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
  1478. ----
  1479. 1 2 3 9
  1480. 3 4 5 9
  1481. 5 NULL 5 9
  1482. 6 2 3 9
  1483. 7 2 2 9
  1484. 8 4 2 9
  1485. 9 2 9 9
  1486. 10 4 9 9
  1487. 11 NULL 9 9
  1488. query II
  1489. SELECT k, first_value(v) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1490. ----
  1491. 1 2
  1492. 3 4
  1493. 5 NULL
  1494. 6 2
  1495. 7 2
  1496. 8 4
  1497. 9 2
  1498. 10 4
  1499. 11 NULL
  1500. query II
  1501. SELECT k, last_value(NULL::INT) OVER () FROM kv ORDER BY 1
  1502. ----
  1503. 1 NULL
  1504. 3 NULL
  1505. 5 NULL
  1506. 6 NULL
  1507. 7 NULL
  1508. 8 NULL
  1509. 9 NULL
  1510. 10 NULL
  1511. 11 NULL
  1512. query II
  1513. SELECT k, last_value(1) OVER () FROM kv ORDER BY 1
  1514. ----
  1515. 1 1
  1516. 3 1
  1517. 5 1
  1518. 6 1
  1519. 7 1
  1520. 8 1
  1521. 9 1
  1522. 10 1
  1523. 11 1
  1524. query IR
  1525. SELECT k, last_value(199.9 * 23.3) OVER () FROM kv ORDER BY 1
  1526. ----
  1527. 1 4657.67
  1528. 3 4657.67
  1529. 5 4657.67
  1530. 6 4657.67
  1531. 7 4657.67
  1532. 8 4657.67
  1533. 9 4657.67
  1534. 10 4657.67
  1535. 11 4657.67
  1536. query II
  1537. SELECT k, last_value(v) OVER (ORDER BY k) FROM kv ORDER BY 1
  1538. ----
  1539. 1 2
  1540. 3 4
  1541. 5 NULL
  1542. 6 2
  1543. 7 2
  1544. 8 4
  1545. 9 2
  1546. 10 4
  1547. 11 NULL
  1548. query IIII
  1549. SELECT k, v, w, last_value(w) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  1550. ----
  1551. 1 2 3 3
  1552. 3 4 5 5
  1553. 5 NULL 5 5
  1554. 6 2 3 3
  1555. 7 2 2 2
  1556. 8 4 2 2
  1557. 9 2 9 9
  1558. 10 4 9 9
  1559. 11 NULL 9 9
  1560. query IIII
  1561. SELECT k, v, w, last_value(w) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
  1562. ----
  1563. 1 2 3 3
  1564. 3 4 5 5
  1565. 5 NULL 5 5
  1566. 6 2 3 3
  1567. 7 2 2 2
  1568. 8 4 2 2
  1569. 9 2 9 9
  1570. 10 4 9 9
  1571. 11 NULL 9 9
  1572. query II
  1573. SELECT k, last_value(v) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1574. ----
  1575. 1 2
  1576. 3 4
  1577. 5 NULL
  1578. 6 2
  1579. 7 2
  1580. 8 4
  1581. 9 2
  1582. 10 4
  1583. 11 NULL
  1584. query error unknown signature: nth_value\(int, string\)
  1585. SELECT k, nth_value(v, 'FOO') OVER () FROM kv ORDER BY 1
  1586. query error argument of nth_value\(\) must be greater than zero
  1587. SELECT k, nth_value(v, -99) OVER () FROM kv ORDER BY 1
  1588. query error argument of nth_value\(\) must be greater than zero
  1589. SELECT k, nth_value(v, 0) OVER () FROM kv ORDER BY 1
  1590. query II
  1591. SELECT k, nth_value(NULL::INT, 5) OVER () FROM kv ORDER BY 1
  1592. ----
  1593. 1 NULL
  1594. 3 NULL
  1595. 5 NULL
  1596. 6 NULL
  1597. 7 NULL
  1598. 8 NULL
  1599. 9 NULL
  1600. 10 NULL
  1601. 11 NULL
  1602. query II
  1603. SELECT k, nth_value(1, 3) OVER () FROM kv ORDER BY 1
  1604. ----
  1605. 1 1
  1606. 3 1
  1607. 5 1
  1608. 6 1
  1609. 7 1
  1610. 8 1
  1611. 9 1
  1612. 10 1
  1613. 11 1
  1614. query II
  1615. SELECT k, nth_value(1, 33) OVER () FROM kv ORDER BY 1
  1616. ----
  1617. 1 NULL
  1618. 3 NULL
  1619. 5 NULL
  1620. 6 NULL
  1621. 7 NULL
  1622. 8 NULL
  1623. 9 NULL
  1624. 10 NULL
  1625. 11 NULL
  1626. query IR
  1627. SELECT k, nth_value(199.9 * 23.3, 7) OVER () FROM kv ORDER BY 1
  1628. ----
  1629. 1 4657.67
  1630. 3 4657.67
  1631. 5 4657.67
  1632. 6 4657.67
  1633. 7 4657.67
  1634. 8 4657.67
  1635. 9 4657.67
  1636. 10 4657.67
  1637. 11 4657.67
  1638. query II
  1639. SELECT k, nth_value(v, 8) OVER (ORDER BY k) FROM kv ORDER BY 1
  1640. ----
  1641. 1 NULL
  1642. 3 NULL
  1643. 5 NULL
  1644. 6 NULL
  1645. 7 NULL
  1646. 8 NULL
  1647. 9 NULL
  1648. 10 4
  1649. 11 4
  1650. query IIII
  1651. SELECT k, v, w, nth_value(w, 2) OVER (PARTITION BY v ORDER BY w) FROM kv ORDER BY 1
  1652. ----
  1653. 1 2 3 3
  1654. 3 4 5 5
  1655. 5 NULL 5 NULL
  1656. 6 2 3 3
  1657. 7 2 2 NULL
  1658. 8 4 2 NULL
  1659. 9 2 9 3
  1660. 10 4 9 5
  1661. 11 NULL 9 9
  1662. query IIII
  1663. SELECT k, v, w, nth_value(w, 2) OVER (PARTITION BY v ORDER BY w DESC) FROM kv ORDER BY 1
  1664. ----
  1665. 1 2 3 3
  1666. 3 4 5 5
  1667. 5 NULL 5 5
  1668. 6 2 3 3
  1669. 7 2 2 3
  1670. 8 4 2 5
  1671. 9 2 9 NULL
  1672. 10 4 9 NULL
  1673. 11 NULL 9 NULL
  1674. query II
  1675. SELECT k, nth_value(v, k) OVER (ORDER BY k) FROM kv ORDER BY 1
  1676. ----
  1677. 1 2
  1678. 3 NULL
  1679. 5 NULL
  1680. 6 NULL
  1681. 7 NULL
  1682. 8 NULL
  1683. 9 NULL
  1684. 10 NULL
  1685. 11 NULL
  1686. query II
  1687. SELECT k, nth_value(v, v) OVER (ORDER BY k) FROM kv ORDER BY 1
  1688. ----
  1689. 1 NULL
  1690. 3 NULL
  1691. 5 NULL
  1692. 6 4
  1693. 7 4
  1694. 8 2
  1695. 9 4
  1696. 10 2
  1697. 11 NULL
  1698. query II
  1699. SELECT k, nth_value(v, 1) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1700. ----
  1701. 1 2
  1702. 3 4
  1703. 5 NULL
  1704. 6 2
  1705. 7 2
  1706. 8 4
  1707. 9 2
  1708. 10 4
  1709. 11 NULL
  1710. query II
  1711. SELECT k, nth_value(v, v) OVER (PARTITION BY k) FROM kv ORDER BY 1
  1712. ----
  1713. 1 NULL
  1714. 3 NULL
  1715. 5 NULL
  1716. 6 NULL
  1717. 7 NULL
  1718. 8 NULL
  1719. 9 NULL
  1720. 10 NULL
  1721. 11 NULL
  1722. statement ok
  1723. INSERT INTO kv VALUES (12, -1, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
  1724. query error argument of nth_value\(\) must be greater than zero
  1725. SELECT k, nth_value(v, v) OVER () FROM kv ORDER BY 1
  1726. statement ok
  1727. DELETE FROM kv WHERE k = 12
  1728. query error FILTER specified, but rank is not an aggregate function
  1729. SELECT k, rank() FILTER (WHERE k=1) OVER () FROM kv
  1730. # Issue materialize#14606: correctly handle aggregation functions above the windowing level
  1731. query I
  1732. SELECT max(i) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
  1733. ----
  1734. 1
  1735. query R
  1736. SELECT (1/j) * max(i) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
  1737. ----
  1738. 0.5
  1739. query R
  1740. SELECT max(i) * (1/j) * (row_number() OVER (ORDER BY max(i))) FROM (SELECT 1 AS i, 2 AS j) GROUP BY j
  1741. ----
  1742. 0.5
  1743. # regression test for materialize#23798 until materialize#10495 is fixed.
  1744. statement error function reserved for internal use
  1745. SELECT final_variance(1.2, 1.2, 123) OVER (PARTITION BY k) FROM kv
  1746. statement ok
  1747. CREATE TABLE products (
  1748. group_id serial PRIMARY KEY,
  1749. group_name VARCHAR (255) NOT NULL,
  1750. product_name VARCHAR (255) NOT NULL,
  1751. price DECIMAL (11, 2),
  1752. priceInt INT,
  1753. priceFloat FLOAT,
  1754. pDate DATE,
  1755. pTime TIME,
  1756. pTimestamp TIMESTAMP,
  1757. pTimestampTZ TIMESTAMPTZ,
  1758. pInterval INTERVAL
  1759. )
  1760. statement ok
  1761. INSERT INTO products (group_name, product_name, price, priceInt, priceFloat, pDate, pTime, pTimestamp, pTimestampTZ, pInterval) VALUES
  1762. ('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'),
  1763. ('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'),
  1764. ('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'),
  1765. ('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'),
  1766. ('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'),
  1767. ('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'),
  1768. ('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'),
  1769. ('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'),
  1770. ('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'),
  1771. ('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'),
  1772. ('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')
  1773. statement error cannot copy window "w" because it has a frame clause
  1774. SELECT avg(price) OVER (w) FROM products WINDOW w AS (ROWS 1 PRECEDING)
  1775. statement error cannot copy window "w" because it has a frame clause
  1776. SELECT avg(price) OVER (w ORDER BY price) FROM products WINDOW w AS (ROWS 1 PRECEDING)
  1777. statement error frame starting offset must not be null
  1778. SELECT avg(price) OVER (ROWS NULL PRECEDING) FROM products
  1779. statement error frame starting offset must not be null
  1780. SELECT avg(price) OVER (ROWS BETWEEN NULL PRECEDING AND 1 FOLLOWING) FROM products
  1781. statement error frame starting offset must not be negative
  1782. SELECT price, avg(price) OVER (PARTITION BY price ROWS -1 PRECEDING) AS avg_price FROM products
  1783. statement error frame starting offset must not be negative
  1784. SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price ROWS -1 PRECEDING)
  1785. statement error frame ending offset must not be null
  1786. SELECT avg(price) OVER (ROWS BETWEEN 1 PRECEDING AND NULL FOLLOWING) FROM products
  1787. statement error frame ending offset must not be negative
  1788. SELECT price, avg(price) OVER (PARTITION BY price ROWS BETWEEN 1 FOLLOWING AND -1 FOLLOWING) AS avg_price FROM products
  1789. statement error frame ending offset must not be negative
  1790. SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price ROWS BETWEEN 1 FOLLOWING AND -1 FOLLOWING)
  1791. statement error frame ending offset must not be negative
  1792. 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
  1793. statement error incompatible window frame start type: decimal
  1794. SELECT avg(price) OVER (PARTITION BY group_name ROWS 1.5 PRECEDING) AS avg_price FROM products
  1795. statement error incompatible window frame start type: decimal
  1796. SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name ROWS 1.5 PRECEDING)
  1797. statement error incompatible window frame start type: decimal
  1798. SELECT avg(price) OVER (PARTITION BY group_name ROWS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING) AS avg_price FROM products
  1799. statement error incompatible window frame start type: decimal
  1800. 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)
  1801. statement error incompatible window frame end type: decimal
  1802. SELECT avg(price) OVER (PARTITION BY group_name ROWS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING) AS avg_price FROM products
  1803. statement error incompatible window frame end type: decimal
  1804. 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)
  1805. query TRT
  1806. 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
  1807. ----
  1808. Microsoft Lumia 200.00 Microsoft Lumia
  1809. Samsung 200.00 Microsoft Lumia
  1810. Lenovo Thinkpad 700.00 Lenovo Thinkpad
  1811. Sony VAIO 700.00 Lenovo Thinkpad
  1812. iPad 700.00 Lenovo Thinkpad
  1813. query TRT
  1814. 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
  1815. ----
  1816. Microsoft Lumia 200.00 Samsung
  1817. Samsung 200.00 Samsung
  1818. Lenovo Thinkpad 700.00 iPad
  1819. Sony VAIO 700.00 iPad
  1820. iPad 700.00 iPad
  1821. query TRT
  1822. 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
  1823. ----
  1824. Microsoft Lumia 200.00 Samsung
  1825. Samsung 200.00 NULL
  1826. Lenovo Thinkpad 700.00 Sony VAIO
  1827. Sony VAIO 700.00 iPad
  1828. iPad 700.00 NULL
  1829. query TTRR
  1830. 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
  1831. ----
  1832. Lenovo Thinkpad Laptop 700.00 700.00
  1833. Sony VAIO Laptop 700.00 733.33333333333333333
  1834. Dell Laptop 800.00 900.00
  1835. HP Elite Laptop 1200.00 1000.00
  1836. Microsoft Lumia Smartphone 200.00 300.00
  1837. HTC One Smartphone 400.00 366.66666666666666667
  1838. Nexus Smartphone 500.00 600.00
  1839. iPhone Smartphone 900.00 700.00
  1840. Kindle Fire Tablet 150.00 175.00
  1841. Samsung Tablet 200.00 350.00
  1842. iPad Tablet 700.00 450.00
  1843. query TTRR
  1844. 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
  1845. ----
  1846. Lenovo Thinkpad Laptop 700.00 700
  1847. Sony VAIO Laptop 700.00 733.333333333333
  1848. Dell Laptop 800.00 900
  1849. HP Elite Laptop 1200.00 1000
  1850. Microsoft Lumia Smartphone 200.00 300
  1851. HTC One Smartphone 400.00 366.666666666667
  1852. Nexus Smartphone 500.00 600
  1853. iPhone Smartphone 900.00 700
  1854. Kindle Fire Tablet 150.00 175
  1855. Samsung Tablet 200.00 350
  1856. iPad Tablet 700.00 450
  1857. query TTRR
  1858. 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
  1859. ----
  1860. Lenovo Thinkpad Laptop 700.00 700
  1861. Sony VAIO Laptop 700.00 733.33333333333333333
  1862. Dell Laptop 800.00 900
  1863. HP Elite Laptop 1200.00 1000
  1864. Microsoft Lumia Smartphone 200.00 300
  1865. HTC One Smartphone 400.00 366.66666666666666667
  1866. Nexus Smartphone 500.00 600
  1867. iPhone Smartphone 900.00 700
  1868. Kindle Fire Tablet 150.00 175
  1869. Samsung Tablet 200.00 350
  1870. iPad Tablet 700.00 450
  1871. query TTRR
  1872. 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
  1873. ----
  1874. Smartphone Microsoft Lumia 200.00 200.00
  1875. Smartphone HTC One 400.00 300.00
  1876. Smartphone Nexus 500.00 366.66666666666666667
  1877. Smartphone iPhone 900.00 600.00
  1878. Laptop HP Elite 1200.00 1200.00
  1879. Laptop Lenovo Thinkpad 700.00 950.00
  1880. Laptop Sony VAIO 700.00 866.66666666666666667
  1881. Laptop Dell 800.00 733.33333333333333333
  1882. Tablet iPad 700.00 700.00
  1883. Tablet Kindle Fire 150.00 425.00
  1884. Tablet Samsung 200.00 350.00
  1885. query TTRR
  1886. 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
  1887. ----
  1888. Smartphone Microsoft Lumia 200.00 200.00
  1889. Smartphone HTC One 400.00 600.00
  1890. Smartphone Nexus 500.00 1100.00
  1891. Smartphone iPhone 900.00 1800.00
  1892. Laptop HP Elite 1200.00 1200.00
  1893. Laptop Lenovo Thinkpad 700.00 1900.00
  1894. Laptop Sony VAIO 700.00 2600.00
  1895. Laptop Dell 800.00 2200.00
  1896. Tablet iPad 700.00 700.00
  1897. Tablet Kindle Fire 150.00 850.00
  1898. Tablet Samsung 200.00 1050.00
  1899. query TTRT
  1900. 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
  1901. ----
  1902. Smartphone Microsoft Lumia 200.00 {200.00,400.00,500.00}
  1903. Smartphone HTC One 400.00 {200.00,400.00,500.00,900.00}
  1904. Smartphone Nexus 500.00 {400.00,500.00,900.00}
  1905. Smartphone iPhone 900.00 {500.00,900.00}
  1906. Laptop HP Elite 1200.00 {1200.00,700.00,700.00}
  1907. Laptop Lenovo Thinkpad 700.00 {1200.00,700.00,700.00,800.00}
  1908. Laptop Sony VAIO 700.00 {700.00,700.00,800.00}
  1909. Laptop Dell 800.00 {700.00,800.00}
  1910. Tablet iPad 700.00 {700.00,150.00,200.00}
  1911. Tablet Kindle Fire 150.00 {700.00,150.00,200.00}
  1912. Tablet Samsung 200.00 {150.00,200.00}
  1913. query TTRR
  1914. 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
  1915. ----
  1916. Smartphone Microsoft Lumia 200.00 500.00
  1917. Smartphone HTC One 400.00 500.00
  1918. Smartphone Nexus 500.00 500.00
  1919. Smartphone iPhone 900.00 500.00
  1920. Laptop HP Elite 1200.00 850.00
  1921. Laptop Lenovo Thinkpad 700.00 850.00
  1922. Laptop Sony VAIO 700.00 850.00
  1923. Laptop Dell 800.00 850.00
  1924. Tablet iPad 700.00 350.00
  1925. Tablet Kindle Fire 150.00 350.00
  1926. Tablet Samsung 200.00 350.00
  1927. query TTRT
  1928. 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
  1929. ----
  1930. Smartphone Microsoft Lumia 200.00 NULL
  1931. Smartphone HTC One 400.00 NULL
  1932. Smartphone Nexus 500.00 NULL
  1933. Smartphone iPhone 900.00 NULL
  1934. Laptop HP Elite 1200.00 NULL
  1935. Laptop Lenovo Thinkpad 700.00 NULL
  1936. Laptop Sony VAIO 700.00 NULL
  1937. Laptop Dell 800.00 NULL
  1938. Tablet iPad 700.00 NULL
  1939. Tablet Kindle Fire 150.00 NULL
  1940. Tablet Samsung 200.00 NULL
  1941. query TRRR
  1942. 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
  1943. ----
  1944. Microsoft Lumia 200.00 200.00 900.00
  1945. HTC One 400.00 200.00 900.00
  1946. Nexus 500.00 400.00 900.00
  1947. iPhone 900.00 500.00 900.00
  1948. HP Elite 1200.00 700.00 1200.00
  1949. Lenovo Thinkpad 700.00 700.00 1200.00
  1950. Sony VAIO 700.00 700.00 1200.00
  1951. Dell 800.00 700.00 1200.00
  1952. iPad 700.00 150.00 700.00
  1953. Kindle Fire 150.00 150.00 700.00
  1954. Samsung 200.00 150.00 700.00
  1955. query TTRT
  1956. 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
  1957. ----
  1958. Smartphone Microsoft Lumia 200.00 200.00
  1959. Smartphone HTC One 400.00 400.00
  1960. Smartphone Nexus 500.00 500.00
  1961. Smartphone iPhone 900.00 900.00
  1962. Laptop HP Elite 1200.00 1200.00
  1963. Laptop Lenovo Thinkpad 700.00 700.00
  1964. Laptop Sony VAIO 700.00 700.00
  1965. Laptop Dell 800.00 800.00
  1966. Tablet iPad 700.00 700.00
  1967. Tablet Kindle Fire 150.00 150.00
  1968. Tablet Samsung 200.00 200.00
  1969. query TTRR
  1970. 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
  1971. ----
  1972. Smartphone Microsoft Lumia 200.00 600.00
  1973. Smartphone HTC One 400.00 700.00
  1974. Smartphone Nexus 500.00 900.00
  1975. Smartphone iPhone 900.00 NULL
  1976. Laptop HP Elite 1200.00 733.33333333333333333
  1977. Laptop Lenovo Thinkpad 700.00 750.00
  1978. Laptop Sony VAIO 700.00 800.00
  1979. Laptop Dell 800.00 NULL
  1980. Tablet iPad 700.00 175.00
  1981. Tablet Kindle Fire 150.00 200.00
  1982. Tablet Samsung 200.00 NULL
  1983. query TRRRRR
  1984. 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
  1985. ----
  1986. Microsoft Lumia 200.00 200.00 400.00 2000.00 200.00
  1987. HTC One 400.00 200.00 500.00 2000.00 400.00
  1988. Nexus 500.00 200.00 900.00 1800.00 500.00
  1989. iPhone 900.00 200.00 900.00 1400.00 900.00
  1990. HP Elite 1200.00 1200.00 1200.00 3400.00 1200.00
  1991. Lenovo Thinkpad 700.00 700.00 1200.00 3400.00 700.00
  1992. Sony VAIO 700.00 700.00 1200.00 2200.00 700.00
  1993. Dell 800.00 700.00 1200.00 1500.00 800.00
  1994. iPad 700.00 700.00 700.00 1050.00 700.00
  1995. Kindle Fire 150.00 150.00 700.00 1050.00 150.00
  1996. Samsung 200.00 150.00 700.00 350.00 200.00
  1997. query RRR
  1998. 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
  1999. ----
  2000. 300.00 200.00 300.00
  2001. 366.66666666666666667 300.00 366.66666666666666667
  2002. 600.00 450.00 600.00
  2003. 700.00 700.00 700.00
  2004. 950.00 1050.00 950.00
  2005. 866.66666666666666667 950.00 866.66666666666666667
  2006. 733.33333333333333333 700.00 733.33333333333333333
  2007. 750.00 750.00 750.00
  2008. 425.00 750.00 425.00
  2009. 350.00 425.00 350.00
  2010. 175.00 175.00 175.00
  2011. # In the following 4 tests, since ORDER BY is omitted, all rows are peers, so frame includes all the rows for every row.
  2012. query TTRR
  2013. SELECT group_name, product_name, price, sum(price) OVER (RANGE CURRENT ROW) FROM products ORDER BY group_id
  2014. ----
  2015. Smartphone Microsoft Lumia 200.00 6450.00
  2016. Smartphone HTC One 400.00 6450.00
  2017. Smartphone Nexus 500.00 6450.00
  2018. Smartphone iPhone 900.00 6450.00
  2019. Laptop HP Elite 1200.00 6450.00
  2020. Laptop Lenovo Thinkpad 700.00 6450.00
  2021. Laptop Sony VAIO 700.00 6450.00
  2022. Laptop Dell 800.00 6450.00
  2023. Tablet iPad 700.00 6450.00
  2024. Tablet Kindle Fire 150.00 6450.00
  2025. Tablet Samsung 200.00 6450.00
  2026. query TTRR
  2027. SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM products ORDER BY group_id
  2028. ----
  2029. Smartphone Microsoft Lumia 200.00 6450.00
  2030. Smartphone HTC One 400.00 6450.00
  2031. Smartphone Nexus 500.00 6450.00
  2032. Smartphone iPhone 900.00 6450.00
  2033. Laptop HP Elite 1200.00 6450.00
  2034. Laptop Lenovo Thinkpad 700.00 6450.00
  2035. Laptop Sony VAIO 700.00 6450.00
  2036. Laptop Dell 800.00 6450.00
  2037. Tablet iPad 700.00 6450.00
  2038. Tablet Kindle Fire 150.00 6450.00
  2039. Tablet Samsung 200.00 6450.00
  2040. query TTRR
  2041. SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN CURRENT ROW AND CURRENT ROW) FROM products ORDER BY group_id
  2042. ----
  2043. Smartphone Microsoft Lumia 200.00 6450.00
  2044. Smartphone HTC One 400.00 6450.00
  2045. Smartphone Nexus 500.00 6450.00
  2046. Smartphone iPhone 900.00 6450.00
  2047. Laptop HP Elite 1200.00 6450.00
  2048. Laptop Lenovo Thinkpad 700.00 6450.00
  2049. Laptop Sony VAIO 700.00 6450.00
  2050. Laptop Dell 800.00 6450.00
  2051. Tablet iPad 700.00 6450.00
  2052. Tablet Kindle Fire 150.00 6450.00
  2053. Tablet Samsung 200.00 6450.00
  2054. query TTRR
  2055. SELECT group_name, product_name, price, sum(price) OVER (RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM products ORDER BY group_id
  2056. ----
  2057. Smartphone Microsoft Lumia 200.00 6450.00
  2058. Smartphone HTC One 400.00 6450.00
  2059. Smartphone Nexus 500.00 6450.00
  2060. Smartphone iPhone 900.00 6450.00
  2061. Laptop HP Elite 1200.00 6450.00
  2062. Laptop Lenovo Thinkpad 700.00 6450.00
  2063. Laptop Sony VAIO 700.00 6450.00
  2064. Laptop Dell 800.00 6450.00
  2065. Tablet iPad 700.00 6450.00
  2066. Tablet Kindle Fire 150.00 6450.00
  2067. Tablet Samsung 200.00 6450.00
  2068. statement error aggregate functions are not allowed in FILTER
  2069. SELECT count(*) FILTER (WHERE count(*) > 5) OVER () FROM products
  2070. statement error window functions are not allowed in FILTER
  2071. SELECT count(*) FILTER (WHERE count(*) OVER () > 5) OVER () FROM products
  2072. statement error incompatible FILTER expression type: int
  2073. SELECT count(*) FILTER (WHERE 1) OVER () FROM products
  2074. statement error syntax error at or near "filter"
  2075. SELECT price FILTER (WHERE price=1) OVER () FROM products
  2076. query II
  2077. SELECT count(*) FILTER (WHERE true) OVER (), count(*) FILTER (WHERE false) OVER () FROM products
  2078. ----
  2079. 11 0
  2080. 11 0
  2081. 11 0
  2082. 11 0
  2083. 11 0
  2084. 11 0
  2085. 11 0
  2086. 11 0
  2087. 11 0
  2088. 11 0
  2089. 11 0
  2090. query RRRR
  2091. 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
  2092. ----
  2093. NULL 200.00 200.00 200.00
  2094. 400.00 600.00 200.00 300.00
  2095. 450.00 1100.00 200.00 366.66666666666666667
  2096. 600.00 2000.00 200.00 366.66666666666666667
  2097. 750.00 NULL 200.00 733.33333333333333333
  2098. 740.00 NULL 450.00 700.00
  2099. 733.33333333333333333 NULL 533.33333333333333333 700.00
  2100. 742.85714285714285714 NULL 533.33333333333333333 733.33333333333333333
  2101. 737.50 NULL 575.00 350.00
  2102. 737.50 NULL 575.00 150.00
  2103. 737.50 NULL 500.00 175.00
  2104. statement error RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column
  2105. SELECT sum(price) OVER (RANGE 100 PRECEDING) FROM products
  2106. statement error RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column
  2107. SELECT sum(price) OVER (ORDER BY price, priceint RANGE 100 PRECEDING) FROM products
  2108. statement error invalid preceding or following size in window function
  2109. SELECT sum(price) OVER (ORDER BY pdate RANGE '-1 days' PRECEDING) FROM products
  2110. statement error invalid preceding or following size in window function
  2111. SELECT sum(price) OVER (ORDER BY ptime RANGE BETWEEN '-1 hours' PRECEDING AND '1 hours' FOLLOWING) FROM products
  2112. statement error invalid preceding or following size in window function
  2113. SELECT sum(price) OVER (ORDER BY ptime RANGE BETWEEN '1 hours' PRECEDING AND '-1 hours' FOLLOWING) FROM products
  2114. statement error incompatible window frame start type: decimal
  2115. SELECT sum(price) OVER (ORDER BY ptimestamp RANGE 123.4 PRECEDING) FROM products
  2116. statement error incompatible window frame start type: int
  2117. SELECT sum(price) OVER (ORDER BY ptimestamptz RANGE BETWEEN 123 PRECEDING AND CURRENT ROW) FROM products
  2118. statement error could not parse "1 days" as type decimal
  2119. SELECT sum(price) OVER (ORDER BY price RANGE BETWEEN 123.4 PRECEDING AND '1 days' FOLLOWING) FROM products
  2120. statement error RANGE with offset PRECEDING/FOLLOWING is not supported for column type varchar
  2121. SELECT sum(price) OVER (ORDER BY product_name RANGE 'foo' PRECEDING) FROM products
  2122. query TTRR
  2123. 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
  2124. ----
  2125. Laptop Lenovo Thinkpad 700.00 1400
  2126. Laptop Sony VAIO 700.00 1400
  2127. Laptop Dell 800.00 2200
  2128. Laptop HP Elite 1200.00 1200
  2129. Smartphone Microsoft Lumia 200.00 200
  2130. Smartphone HTC One 400.00 600
  2131. Smartphone Nexus 500.00 900
  2132. Smartphone iPhone 900.00 900
  2133. Tablet Kindle Fire 150.00 150
  2134. Tablet Samsung 200.00 350
  2135. Tablet iPad 700.00 700
  2136. query TTRR
  2137. 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
  2138. ----
  2139. Laptop Lenovo Thinkpad 700.00 1400.00
  2140. Laptop Sony VAIO 700.00 1400.00
  2141. Laptop Dell 800.00 2200.00
  2142. Laptop HP Elite 1200.00 1200.00
  2143. Smartphone Microsoft Lumia 200.00 200.00
  2144. Smartphone HTC One 400.00 600.00
  2145. Smartphone Nexus 500.00 900.00
  2146. Smartphone iPhone 900.00 900.00
  2147. Tablet Kindle Fire 150.00 150.00
  2148. Tablet Samsung 200.00 350.00
  2149. Tablet iPad 700.00 700.00
  2150. query TTRR
  2151. 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
  2152. ----
  2153. Laptop Lenovo Thinkpad 700.00 1400
  2154. Laptop Sony VAIO 700.00 1400
  2155. Laptop Dell 800.00 2200
  2156. Laptop HP Elite 1200.00 1200
  2157. Smartphone Microsoft Lumia 200.00 200
  2158. Smartphone HTC One 400.00 600
  2159. Smartphone Nexus 500.00 900
  2160. Smartphone iPhone 900.00 900
  2161. Tablet Kindle Fire 150.00 350
  2162. Tablet Samsung 200.00 350
  2163. Tablet iPad 700.00 700
  2164. query TTRR
  2165. 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
  2166. ----
  2167. Laptop Lenovo Thinkpad 700.00 NULL
  2168. Laptop Sony VAIO 700.00 NULL
  2169. Laptop Dell 800.00 NULL
  2170. Laptop HP Elite 1200.00 NULL
  2171. Smartphone Microsoft Lumia 200.00 NULL
  2172. Smartphone HTC One 400.00 NULL
  2173. Smartphone Nexus 500.00 NULL
  2174. Smartphone iPhone 900.00 NULL
  2175. Tablet Kindle Fire 150.00 NULL
  2176. Tablet Samsung 200.00 NULL
  2177. Tablet iPad 700.00 NULL
  2178. query TTRR
  2179. 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
  2180. ----
  2181. Laptop Lenovo Thinkpad 700.00 NULL
  2182. Laptop Sony VAIO 700.00 NULL
  2183. Laptop Dell 800.00 1400
  2184. Laptop HP Elite 1200.00 NULL
  2185. Smartphone Microsoft Lumia 200.00 NULL
  2186. Smartphone HTC One 400.00 200
  2187. Smartphone Nexus 500.00 600
  2188. Smartphone iPhone 900.00 NULL
  2189. Tablet Kindle Fire 150.00 NULL
  2190. Tablet Samsung 200.00 150
  2191. Tablet iPad 700.00 NULL
  2192. query TTRR
  2193. 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
  2194. ----
  2195. Laptop Lenovo Thinkpad 700.00 800
  2196. Laptop Sony VAIO 700.00 800
  2197. Laptop Dell 800.00 NULL
  2198. Laptop HP Elite 1200.00 NULL
  2199. Smartphone Microsoft Lumia 200.00 900
  2200. Smartphone HTC One 400.00 500
  2201. Smartphone Nexus 500.00 NULL
  2202. Smartphone iPhone 900.00 NULL
  2203. Tablet Kindle Fire 150.00 200
  2204. Tablet Samsung 200.00 NULL
  2205. Tablet iPad 700.00 NULL
  2206. query TRR
  2207. 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
  2208. ----
  2209. Laptop 700.00 800.00
  2210. Laptop 700.00 800.00
  2211. Laptop 800.00 NULL
  2212. Laptop 1200.00 NULL
  2213. Smartphone 200.00 900.00
  2214. Smartphone 400.00 500.00
  2215. Smartphone 500.00 NULL
  2216. Smartphone 900.00 NULL
  2217. Tablet 150.00 200.00
  2218. Tablet 200.00 NULL
  2219. Tablet 700.00 NULL
  2220. query TRR
  2221. 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
  2222. ----
  2223. Laptop 700.00 800
  2224. Laptop 700.00 800
  2225. Laptop 800.00 NULL
  2226. Laptop 1200.00 NULL
  2227. Smartphone 200.00 900
  2228. Smartphone 400.00 500
  2229. Smartphone 500.00 NULL
  2230. Smartphone 900.00 NULL
  2231. Tablet 150.00 200
  2232. Tablet 200.00 NULL
  2233. Tablet 700.00 NULL
  2234. query TTRR
  2235. 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
  2236. ----
  2237. Laptop Lenovo Thinkpad 700.00 1200
  2238. Laptop Sony VAIO 700.00 1200
  2239. Laptop Dell 800.00 NULL
  2240. Laptop HP Elite 1200.00 NULL
  2241. Smartphone Microsoft Lumia 200.00 500
  2242. Smartphone HTC One 400.00 900
  2243. Smartphone Nexus 500.00 NULL
  2244. Smartphone iPhone 900.00 NULL
  2245. Tablet Kindle Fire 150.00 NULL
  2246. Tablet Samsung 200.00 NULL
  2247. Tablet iPad 700.00 NULL
  2248. query TTTRR
  2249. SELECT group_name, product_name, pdate, price, sum(price) OVER (ORDER BY pdate RANGE '1 days' PRECEDING) FROM products ORDER BY pdate, group_id
  2250. ----
  2251. Smartphone Microsoft Lumia 2018-07-30 00:00:00 +0000 +0000 200.00 3500.00
  2252. Smartphone Nexus 2018-07-30 00:00:00 +0000 +0000 500.00 3500.00
  2253. Laptop HP Elite 2018-07-30 00:00:00 +0000 +0000 1200.00 3500.00
  2254. Laptop Sony VAIO 2018-07-30 00:00:00 +0000 +0000 700.00 3500.00
  2255. Tablet iPad 2018-07-30 00:00:00 +0000 +0000 700.00 3500.00
  2256. Tablet Samsung 2018-07-30 00:00:00 +0000 +0000 200.00 3500.00
  2257. Smartphone HTC One 2018-07-31 00:00:00 +0000 +0000 400.00 6450.00
  2258. Smartphone iPhone 2018-07-31 00:00:00 +0000 +0000 900.00 6450.00
  2259. Laptop Lenovo Thinkpad 2018-07-31 00:00:00 +0000 +0000 700.00 6450.00
  2260. Laptop Dell 2018-07-31 00:00:00 +0000 +0000 800.00 6450.00
  2261. Tablet Kindle Fire 2018-07-31 00:00:00 +0000 +0000 150.00 6450.00
  2262. query TTRR
  2263. 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
  2264. ----
  2265. Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 700.00
  2266. HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
  2267. iPad 0000-01-01 01:23:45 +0000 UTC 700.00 700.00
  2268. iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 850.00
  2269. Dell 0000-01-01 07:34:56 +0000 UTC 800.00 850.00
  2270. Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 441.66666666666666667
  2271. Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 441.66666666666666667
  2272. Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 441.66666666666666667
  2273. HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 441.66666666666666667
  2274. Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 441.66666666666666667
  2275. Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 441.66666666666666667
  2276. query TTTRR
  2277. 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
  2278. ----
  2279. Laptop HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
  2280. Laptop Dell 0000-01-01 07:34:56 +0000 UTC 800.00 700.00
  2281. Laptop Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 700.00
  2282. Laptop Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 NULL
  2283. Smartphone Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 400.00
  2284. Smartphone iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 400.00
  2285. Smartphone Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 400.00
  2286. Smartphone HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 NULL
  2287. Tablet iPad 0000-01-01 01:23:45 +0000 UTC 700.00 150.00
  2288. Tablet Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 150.00
  2289. Tablet Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 NULL
  2290. query TTTRR
  2291. 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
  2292. ----
  2293. Laptop HP Elite 2018-07-30 01:23:45 +0000 +0000 1200.00 1200.00
  2294. Laptop Sony VAIO 2018-07-30 11:23:45 +0000 +0000 700.00 1200.00
  2295. Laptop Dell 2018-07-31 07:34:56 +0000 +0000 800.00 800.00
  2296. Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 +0000 700.00 800.00
  2297. Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 +0000 200.00 200.00
  2298. Smartphone Nexus 2018-07-30 11:23:45 +0000 +0000 500.00 200.00
  2299. Smartphone iPhone 2018-07-31 07:34:56 +0000 +0000 900.00 900.00
  2300. Smartphone HTC One 2018-07-31 12:34:56 +0000 +0000 400.00 900.00
  2301. Tablet iPad 2018-07-30 01:23:45 +0000 +0000 700.00 700.00
  2302. Tablet Samsung 2018-07-30 11:23:45 +0000 +0000 200.00 700.00
  2303. Tablet Kindle Fire 2018-07-31 12:34:56 +0000 +0000 150.00 150.00
  2304. query TTTRR
  2305. 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
  2306. ----
  2307. Laptop HP Elite 2018-07-30 01:23:45 +0000 UTC 1200.00 1200.00
  2308. Laptop Sony VAIO 2018-07-30 11:23:45 +0000 UTC 700.00 950.00
  2309. Laptop Dell 2018-07-31 07:34:56 +0000 UTC 800.00 900.00
  2310. Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 UTC 700.00 850.00
  2311. Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 UTC 200.00 200.00
  2312. Smartphone Nexus 2018-07-30 11:23:45 +0000 UTC 500.00 350.00
  2313. Smartphone iPhone 2018-07-31 07:34:56 +0000 UTC 900.00 533.33333333333333333
  2314. Smartphone HTC One 2018-07-31 12:34:56 +0000 UTC 400.00 500.00
  2315. Tablet iPad 2018-07-30 01:23:45 +0000 UTC 700.00 700.00
  2316. Tablet Samsung 2018-07-30 11:23:45 +0000 UTC 200.00 450.00
  2317. Tablet Kindle Fire 2018-07-31 12:34:56 +0000 UTC 150.00 350.00
  2318. query TTRR
  2319. 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
  2320. ----
  2321. iPhone 00:01:02 900.00 586.36363636363636364
  2322. Dell 00:01:02 800.00 586.36363636363636364
  2323. Nexus 01:02:03 500.00 586.36363636363636364
  2324. Sony VAIO 01:02:03 700.00 586.36363636363636364
  2325. Samsung 01:02:03 200.00 586.36363636363636364
  2326. HTC One 1 day 02:03:04 400.00 558.33333333333333333
  2327. Lenovo Thinkpad 1 day 02:03:04 700.00 558.33333333333333333
  2328. Kindle Fire 1 day 02:03:04 150.00 558.33333333333333333
  2329. Microsoft Lumia 1 mon 2 days 03:04:05 200.00 700.00
  2330. HP Elite 1 mon 2 days 03:04:05 1200.00 700.00
  2331. iPad 1 mon 2 days 03:04:05 700.00 700.00
  2332. query TTRR
  2333. 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
  2334. ----
  2335. Laptop HP Elite 1200.00 1200
  2336. Laptop Dell 800.00 800
  2337. Laptop Lenovo Thinkpad 700.00 2200
  2338. Laptop Sony VAIO 700.00 2200
  2339. Smartphone iPhone 900.00 900
  2340. Smartphone Nexus 500.00 500
  2341. Smartphone HTC One 400.00 900
  2342. Smartphone Microsoft Lumia 200.00 600
  2343. Tablet iPad 700.00 700
  2344. Tablet Samsung 200.00 200
  2345. Tablet Kindle Fire 150.00 350
  2346. query TTRR
  2347. 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
  2348. ----
  2349. Laptop HP Elite 1200.00 1200.00
  2350. Laptop Dell 800.00 800.00
  2351. Laptop Lenovo Thinkpad 700.00 2200.00
  2352. Laptop Sony VAIO 700.00 2200.00
  2353. Smartphone iPhone 900.00 900.00
  2354. Smartphone Nexus 500.00 500.00
  2355. Smartphone HTC One 400.00 900.00
  2356. Smartphone Microsoft Lumia 200.00 600.00
  2357. Tablet iPad 700.00 700.00
  2358. Tablet Samsung 200.00 200.00
  2359. Tablet Kindle Fire 150.00 350.00
  2360. query TTRR
  2361. 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
  2362. ----
  2363. Laptop HP Elite 1200.00 1200
  2364. Laptop Dell 800.00 800
  2365. Laptop Lenovo Thinkpad 700.00 2200
  2366. Laptop Sony VAIO 700.00 2200
  2367. Smartphone iPhone 900.00 900
  2368. Smartphone Nexus 500.00 500
  2369. Smartphone HTC One 400.00 900
  2370. Smartphone Microsoft Lumia 200.00 600
  2371. Tablet iPad 700.00 700
  2372. Tablet Samsung 200.00 350
  2373. Tablet Kindle Fire 150.00 350
  2374. query TTRR
  2375. 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
  2376. ----
  2377. Laptop HP Elite 1200.00 NULL
  2378. Laptop Dell 800.00 NULL
  2379. Laptop Lenovo Thinkpad 700.00 NULL
  2380. Laptop Sony VAIO 700.00 NULL
  2381. Smartphone iPhone 900.00 NULL
  2382. Smartphone Nexus 500.00 NULL
  2383. Smartphone HTC One 400.00 NULL
  2384. Smartphone Microsoft Lumia 200.00 NULL
  2385. Tablet iPad 700.00 NULL
  2386. Tablet Samsung 200.00 NULL
  2387. Tablet Kindle Fire 150.00 NULL
  2388. query TTRR
  2389. 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
  2390. ----
  2391. Laptop HP Elite 1200.00 NULL
  2392. Laptop Dell 800.00 NULL
  2393. Laptop Lenovo Thinkpad 700.00 800
  2394. Laptop Sony VAIO 700.00 800
  2395. Smartphone iPhone 900.00 NULL
  2396. Smartphone Nexus 500.00 NULL
  2397. Smartphone HTC One 400.00 500
  2398. Smartphone Microsoft Lumia 200.00 900
  2399. Tablet iPad 700.00 NULL
  2400. Tablet Samsung 200.00 NULL
  2401. Tablet Kindle Fire 150.00 200
  2402. query TTRR
  2403. 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
  2404. ----
  2405. Laptop HP Elite 1200.00 NULL
  2406. Laptop Dell 800.00 1400
  2407. Laptop Lenovo Thinkpad 700.00 NULL
  2408. Laptop Sony VAIO 700.00 NULL
  2409. Smartphone iPhone 900.00 NULL
  2410. Smartphone Nexus 500.00 600
  2411. Smartphone HTC One 400.00 200
  2412. Smartphone Microsoft Lumia 200.00 NULL
  2413. Tablet iPad 700.00 NULL
  2414. Tablet Samsung 200.00 150
  2415. Tablet Kindle Fire 150.00 NULL
  2416. query TRR
  2417. 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
  2418. ----
  2419. Laptop 1200.00 NULL
  2420. Laptop 800.00 1400.00
  2421. Laptop 700.00 NULL
  2422. Laptop 700.00 NULL
  2423. Smartphone 900.00 NULL
  2424. Smartphone 500.00 600.00
  2425. Smartphone 400.00 200.00
  2426. Smartphone 200.00 NULL
  2427. Tablet 700.00 NULL
  2428. Tablet 200.00 150.00
  2429. Tablet 150.00 NULL
  2430. query TRR
  2431. 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
  2432. ----
  2433. Laptop 1200.00 NULL
  2434. Laptop 800.00 1400
  2435. Laptop 700.00 NULL
  2436. Laptop 700.00 NULL
  2437. Smartphone 900.00 NULL
  2438. Smartphone 500.00 600
  2439. Smartphone 400.00 200
  2440. Smartphone 200.00 NULL
  2441. Tablet 700.00 NULL
  2442. Tablet 200.00 150
  2443. Tablet 150.00 NULL
  2444. query TTRR
  2445. 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
  2446. ----
  2447. Laptop HP Elite 1200.00 700
  2448. Laptop Dell 800.00 700
  2449. Laptop Lenovo Thinkpad 700.00 NULL
  2450. Laptop Sony VAIO 700.00 NULL
  2451. Smartphone iPhone 900.00 400
  2452. Smartphone Nexus 500.00 200
  2453. Smartphone HTC One 400.00 NULL
  2454. Smartphone Microsoft Lumia 200.00 NULL
  2455. Tablet iPad 700.00 NULL
  2456. Tablet Samsung 200.00 NULL
  2457. Tablet Kindle Fire 150.00 NULL
  2458. query TTTRR
  2459. 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
  2460. ----
  2461. Smartphone HTC One 2018-07-31 00:00:00 +0000 +0000 400.00 2950.00
  2462. Smartphone iPhone 2018-07-31 00:00:00 +0000 +0000 900.00 2950.00
  2463. Laptop Lenovo Thinkpad 2018-07-31 00:00:00 +0000 +0000 700.00 2950.00
  2464. Laptop Dell 2018-07-31 00:00:00 +0000 +0000 800.00 2950.00
  2465. Tablet Kindle Fire 2018-07-31 00:00:00 +0000 +0000 150.00 2950.00
  2466. Smartphone Microsoft Lumia 2018-07-30 00:00:00 +0000 +0000 200.00 6450.00
  2467. Smartphone Nexus 2018-07-30 00:00:00 +0000 +0000 500.00 6450.00
  2468. Laptop HP Elite 2018-07-30 00:00:00 +0000 +0000 1200.00 6450.00
  2469. Laptop Sony VAIO 2018-07-30 00:00:00 +0000 +0000 700.00 6450.00
  2470. Tablet iPad 2018-07-30 00:00:00 +0000 +0000 700.00 6450.00
  2471. Tablet Samsung 2018-07-30 00:00:00 +0000 +0000 200.00 6450.00
  2472. query TTRR
  2473. 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
  2474. ----
  2475. HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 441.66666666666666667
  2476. Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 441.66666666666666667
  2477. Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 441.66666666666666667
  2478. Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 441.66666666666666667
  2479. Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 441.66666666666666667
  2480. Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 441.66666666666666667
  2481. iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 850.00
  2482. Dell 0000-01-01 07:34:56 +0000 UTC 800.00 850.00
  2483. Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 700.00
  2484. HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 700.00
  2485. iPad 0000-01-01 01:23:45 +0000 UTC 700.00 700.00
  2486. query TTTRR
  2487. 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
  2488. ----
  2489. Laptop Lenovo Thinkpad 0000-01-01 12:34:56 +0000 UTC 700.00 700.00
  2490. Laptop Sony VAIO 0000-01-01 11:23:45 +0000 UTC 700.00 800.00
  2491. Laptop Dell 0000-01-01 07:34:56 +0000 UTC 800.00 1200.00
  2492. Laptop HP Elite 0000-01-01 01:23:45 +0000 UTC 1200.00 NULL
  2493. Smartphone HTC One 0000-01-01 12:34:56 +0000 UTC 400.00 200.00
  2494. Smartphone Nexus 0000-01-01 11:23:45 +0000 UTC 500.00 200.00
  2495. Smartphone iPhone 0000-01-01 07:34:56 +0000 UTC 900.00 200.00
  2496. Smartphone Microsoft Lumia 0000-01-01 01:23:45 +0000 UTC 200.00 NULL
  2497. Tablet Kindle Fire 0000-01-01 12:34:56 +0000 UTC 150.00 200.00
  2498. Tablet Samsung 0000-01-01 11:23:45 +0000 UTC 200.00 700.00
  2499. Tablet iPad 0000-01-01 01:23:45 +0000 UTC 700.00 NULL
  2500. query TTTRR
  2501. 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
  2502. ----
  2503. Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 +0000 700.00 700.00
  2504. Laptop Dell 2018-07-31 07:34:56 +0000 +0000 800.00 700.00
  2505. Laptop Sony VAIO 2018-07-30 11:23:45 +0000 +0000 700.00 700.00
  2506. Laptop HP Elite 2018-07-30 01:23:45 +0000 +0000 1200.00 700.00
  2507. Smartphone HTC One 2018-07-31 12:34:56 +0000 +0000 400.00 400.00
  2508. Smartphone iPhone 2018-07-31 07:34:56 +0000 +0000 900.00 400.00
  2509. Smartphone Nexus 2018-07-30 11:23:45 +0000 +0000 500.00 500.00
  2510. Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 +0000 200.00 500.00
  2511. Tablet Kindle Fire 2018-07-31 12:34:56 +0000 +0000 150.00 150.00
  2512. Tablet Samsung 2018-07-30 11:23:45 +0000 +0000 200.00 200.00
  2513. Tablet iPad 2018-07-30 01:23:45 +0000 +0000 700.00 200.00
  2514. query TTTRR
  2515. 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
  2516. ----
  2517. Laptop Lenovo Thinkpad 2018-07-31 12:34:56 +0000 UTC 700.00 700.00
  2518. Laptop Dell 2018-07-31 07:34:56 +0000 UTC 800.00 750.00
  2519. Laptop Sony VAIO 2018-07-30 11:23:45 +0000 UTC 700.00 733.33333333333333333
  2520. Laptop HP Elite 2018-07-30 01:23:45 +0000 UTC 1200.00 850.00
  2521. Smartphone HTC One 2018-07-31 12:34:56 +0000 UTC 400.00 400.00
  2522. Smartphone iPhone 2018-07-31 07:34:56 +0000 UTC 900.00 650.00
  2523. Smartphone Nexus 2018-07-30 11:23:45 +0000 UTC 500.00 600.00
  2524. Smartphone Microsoft Lumia 2018-07-30 01:23:45 +0000 UTC 200.00 500.00
  2525. Tablet Kindle Fire 2018-07-31 12:34:56 +0000 UTC 150.00 150.00
  2526. Tablet Samsung 2018-07-30 11:23:45 +0000 UTC 200.00 175.00
  2527. Tablet iPad 2018-07-30 01:23:45 +0000 UTC 700.00 350.00
  2528. query TTRR
  2529. 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
  2530. ----
  2531. Microsoft Lumia 1 mon 2 days 03:04:05 200.00 586.36363636363636364
  2532. HP Elite 1 mon 2 days 03:04:05 1200.00 586.36363636363636364
  2533. iPad 1 mon 2 days 03:04:05 700.00 586.36363636363636364
  2534. HTC One 1 day 02:03:04 400.00 543.75
  2535. Lenovo Thinkpad 1 day 02:03:04 700.00 543.75
  2536. Kindle Fire 1 day 02:03:04 150.00 543.75
  2537. Nexus 01:02:03 500.00 620.00
  2538. Sony VAIO 01:02:03 700.00 620.00
  2539. Samsung 01:02:03 200.00 620.00
  2540. iPhone 00:01:02 900.00 620.00
  2541. Dell 00:01:02 800.00 620.00
  2542. query TRTT
  2543. 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
  2544. ----
  2545. Smartphone 200.00 Microsoft Lumia {"Microsoft Lumia"}
  2546. Smartphone 400.00 HTC One {"Microsoft Lumia","HTC One"}
  2547. Smartphone 500.00 Nexus {"Microsoft Lumia","HTC One",Nexus}
  2548. Smartphone 900.00 iPhone {"Microsoft Lumia","HTC One",Nexus,iPhone}
  2549. Laptop 1200.00 HP Elite {"Lenovo Thinkpad","Sony VAIO",Dell,"HP Elite"}
  2550. Laptop 700.00 Lenovo Thinkpad {"Lenovo Thinkpad"}
  2551. Laptop 700.00 Sony VAIO {"Lenovo Thinkpad","Sony VAIO"}
  2552. Laptop 800.00 Dell {"Lenovo Thinkpad","Sony VAIO",Dell}
  2553. Tablet 700.00 iPad {"Kindle Fire",Samsung,iPad}
  2554. Tablet 150.00 Kindle Fire {"Kindle Fire"}
  2555. Tablet 200.00 Samsung {"Kindle Fire",Samsung}
  2556. query TT
  2557. SELECT product_name, array_agg(product_name) OVER (ORDER BY group_id) FROM products ORDER BY group_id
  2558. ----
  2559. Microsoft Lumia {"Microsoft Lumia"}
  2560. HTC One {"Microsoft Lumia","HTC One"}
  2561. Nexus {"Microsoft Lumia","HTC One",Nexus}
  2562. iPhone {"Microsoft Lumia","HTC One",Nexus,iPhone}
  2563. HP Elite {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite"}
  2564. Lenovo Thinkpad {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad"}
  2565. Sony VAIO {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO"}
  2566. Dell {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell}
  2567. iPad {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad}
  2568. Kindle Fire {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad,"Kindle Fire"}
  2569. Samsung {"Microsoft Lumia","HTC One",Nexus,iPhone,"HP Elite","Lenovo Thinkpad","Sony VAIO",Dell,iPad,"Kindle Fire",Samsung}
  2570. statement error frame starting offset must not be null
  2571. SELECT avg(price) OVER (GROUPS NULL PRECEDING) FROM products
  2572. statement error frame starting offset must not be null
  2573. SELECT avg(price) OVER (GROUPS BETWEEN NULL PRECEDING AND 1 FOLLOWING) FROM products
  2574. statement error frame starting offset must not be negative
  2575. SELECT price, avg(price) OVER (PARTITION BY price GROUPS -1 PRECEDING) AS avg_price FROM products
  2576. statement error frame starting offset must not be negative
  2577. SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price GROUPS -1 PRECEDING)
  2578. statement error frame ending offset must not be null
  2579. SELECT avg(price) OVER (GROUPS BETWEEN 1 PRECEDING AND NULL FOLLOWING) FROM products
  2580. statement error frame ending offset must not be negative
  2581. SELECT price, avg(price) OVER (PARTITION BY price GROUPS BETWEEN 1 FOLLOWING AND -1 FOLLOWING) AS avg_price FROM products
  2582. statement error frame ending offset must not be negative
  2583. SELECT price, avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY price GROUPS BETWEEN 1 FOLLOWING AND -1 FOLLOWING)
  2584. statement error frame ending offset must not be negative
  2585. 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
  2586. statement error incompatible window frame start type: decimal
  2587. SELECT avg(price) OVER (PARTITION BY group_name GROUPS 1.5 PRECEDING) AS avg_price FROM products
  2588. statement error incompatible window frame start type: decimal
  2589. SELECT avg(price) OVER w AS avg_price FROM products WINDOW w AS (PARTITION BY group_name GROUPS 1.5 PRECEDING)
  2590. statement error incompatible window frame start type: decimal
  2591. SELECT avg(price) OVER (PARTITION BY group_name GROUPS BETWEEN 1.5 PRECEDING AND UNBOUNDED FOLLOWING) AS avg_price FROM products
  2592. statement error incompatible window frame start type: decimal
  2593. 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)
  2594. statement error incompatible window frame end type: decimal
  2595. SELECT avg(price) OVER (PARTITION BY group_name GROUPS BETWEEN UNBOUNDED PRECEDING AND 1.5 FOLLOWING) AS avg_price FROM products
  2596. statement error incompatible window frame end type: decimal
  2597. 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)
  2598. query RRRRR
  2599. 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
  2600. ----
  2601. 150.00 150.00 150.00 150.00 1050.00
  2602. 200.00 550.00 550.00 550.00 2000.00
  2603. 200.00 550.00 550.00 550.00 1050.00
  2604. 400.00 950.00 950.00 800.00 2000.00
  2605. 500.00 1450.00 1450.00 900.00 2000.00
  2606. 700.00 3550.00 3550.00 2600.00 3400.00
  2607. 700.00 3550.00 3550.00 2600.00 3400.00
  2608. 700.00 3550.00 3550.00 2600.00 1050.00
  2609. 800.00 4350.00 4350.00 2900.00 3400.00
  2610. 900.00 5250.00 5250.00 1700.00 2000.00
  2611. 1200.00 6450.00 6450.00 2100.00 3400.00
  2612. query RIRRRRRR
  2613. 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
  2614. ----
  2615. 150.00 1 NULL NULL 150.00 237.50 586.36363636363636364 586.36363636363636364
  2616. 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
  2617. 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
  2618. 400.00 3 NULL 150.00 237.50 443.75 586.36363636363636364 586.36363636363636364
  2619. 500.00 4 NULL 183.33333333333333333 290.00 483.33333333333333333 586.36363636363636364 586.36363636363636364
  2620. 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
  2621. 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
  2622. 700.00 5 NULL 237.50 443.75 525.00 586.36363636363636364 586.36363636363636364
  2623. 800.00 6 NULL 290.00 483.33333333333333333 586.36363636363636364 586.36363636363636364 586.36363636363636364
  2624. 900.00 7 NULL 443.75 525.00 586.36363636363636364 586.36363636363636364 586.36363636363636364
  2625. 1200.00 8 NULL 483.33333333333333333 586.36363636363636364 586.36363636363636364 586.36363636363636364 586.36363636363636364
  2626. query RIRRRRRR
  2627. 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
  2628. ----
  2629. 150.00 1 NULL NULL 150.00 237.50 586.36363636363636364 586.36363636363636364
  2630. 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
  2631. 200.00 2 NULL NULL 183.33333333333333333 290.00 586.36363636363636364 586.36363636363636364
  2632. 400.00 3 NULL 150.00 237.50 485.71428571428571429 630.00 630.00
  2633. 500.00 4 NULL 183.33333333333333333 325.00 633.33333333333333333 737.50 737.50
  2634. 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
  2635. 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
  2636. 700.00 5 NULL 266.66666666666666667 600.00 716.66666666666666667 785.71428571428571429 785.71428571428571429
  2637. 800.00 6 NULL 450.00 680.00 833.33333333333333333 833.33333333333333333 833.33333333333333333
  2638. 900.00 7 NULL 650.00 760.00 966.66666666666666667 966.66666666666666667 966.66666666666666667
  2639. 1200.00 8 NULL 725.00 966.66666666666666667 1050.00 1050.00 1050.00
  2640. query RIRRRRRRR
  2641. 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
  2642. ----
  2643. 150.00 1 150.00 150.00 150.00 150.00 237.50 586.36363636363636364 586.36363636363636364
  2644. 200.00 2 200.00 200.00 200.00 200.00 325.00 630.00 630.00
  2645. 200.00 2 200.00 200.00 200.00 200.00 325.00 630.00 630.00
  2646. 400.00 3 400.00 400.00 400.00 400.00 600.00 737.50 737.50
  2647. 500.00 4 500.00 500.00 500.00 500.00 680.00 785.71428571428571429 785.71428571428571429
  2648. 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
  2649. 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
  2650. 700.00 5 700.00 700.00 700.00 700.00 760.00 833.33333333333333333 833.33333333333333333
  2651. 800.00 6 800.00 800.00 800.00 800.00 966.66666666666666667 966.66666666666666667 966.66666666666666667
  2652. 900.00 7 900.00 900.00 900.00 900.00 1050.00 1050.00 1050.00
  2653. 1200.00 8 1200.00 1200.00 1200.00 1200.00 1200.00 1200.00 1200.00
  2654. query RIRRRRRR
  2655. 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
  2656. ----
  2657. 150.00 1 785.71428571428571429 NULL 671.42857142857142857 500.00 443.75 966.66666666666666667
  2658. 200.00 2 833.33333333333333333 NULL 785.71428571428571429 700.00 525.00 1050.00
  2659. 200.00 2 833.33333333333333333 NULL 785.71428571428571429 700.00 525.00 1050.00
  2660. 400.00 3 966.66666666666666667 NULL 833.33333333333333333 800.00 671.42857142857142857 1200.00
  2661. 500.00 4 1050.00 NULL 966.66666666666666667 900.00 785.71428571428571429 NULL
  2662. 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
  2663. 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
  2664. 700.00 5 1200.00 NULL 1050.00 1200.00 833.33333333333333333 NULL
  2665. 800.00 6 NULL NULL 1200.00 NULL 966.66666666666666667 NULL
  2666. 900.00 7 NULL NULL NULL NULL 1050.00 NULL
  2667. 1200.00 8 NULL NULL NULL NULL 1200.00 NULL
  2668. query TTRRR
  2669. 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
  2670. ----
  2671. Smartphone Microsoft Lumia 200.00 500.00 586.36363636363636364
  2672. Smartphone HTC One 400.00 600.00 586.36363636363636364
  2673. Smartphone Nexus 500.00 700.00 586.36363636363636364
  2674. Smartphone iPhone 900.00 900.00 586.36363636363636364
  2675. Laptop HP Elite 1200.00 1200.00 586.36363636363636364
  2676. Laptop Lenovo Thinkpad 700.00 850.00 586.36363636363636364
  2677. Laptop Sony VAIO 700.00 850.00 586.36363636363636364
  2678. Laptop Dell 800.00 1000.00 586.36363636363636364
  2679. Tablet iPad 700.00 700.00 586.36363636363636364
  2680. Tablet Kindle Fire 150.00 350.00 586.36363636363636364
  2681. Tablet Samsung 200.00 450.00 586.36363636363636364
  2682. query TTRRR
  2683. 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
  2684. ----
  2685. Smartphone Microsoft Lumia 200.00 NULL 200.00
  2686. Smartphone HTC One 400.00 NULL 400.00
  2687. Smartphone Nexus 500.00 NULL 500.00
  2688. Smartphone iPhone 900.00 NULL 900.00
  2689. Laptop HP Elite 1200.00 NULL 1200.00
  2690. Laptop Lenovo Thinkpad 700.00 NULL 700.00
  2691. Laptop Sony VAIO 700.00 NULL 700.00
  2692. Laptop Dell 800.00 NULL 800.00
  2693. Tablet iPad 700.00 NULL 700.00
  2694. Tablet Kindle Fire 150.00 NULL 150.00
  2695. Tablet Samsung 200.00 NULL 200.00
  2696. # Test for cockroach#32702
  2697. statement ok
  2698. CREATE TABLE x (a INT)
  2699. statement ok
  2700. INSERT INTO x VALUES (1), (2), (3)
  2701. query IT
  2702. SELECT a, json_agg(a) OVER (ORDER BY a) FROM x ORDER BY a
  2703. ----
  2704. 1 [1]
  2705. 2 [1, 2]
  2706. 3 [1, 2, 3]
  2707. # Test for cockroach#35267
  2708. query I
  2709. SELECT
  2710. row_number() OVER (PARTITION BY s)
  2711. FROM
  2712. (SELECT sum(a) AS s FROM (SELECT a FROM x UNION ALL SELECT a FROM x) GROUP BY a)
  2713. ----
  2714. 1
  2715. 1
  2716. 1
  2717. # Tests for cockroach#32050
  2718. statement error window function calls cannot be nested
  2719. SELECT sum(a) OVER (PARTITION BY count(a) OVER ()) FROM x
  2720. statement error window function calls cannot be nested
  2721. SELECT sum(a) OVER (ORDER BY count(a) OVER ()) FROM x
  2722. statement error window function calls cannot be nested
  2723. SELECT sum(a) OVER (PARTITION BY count(a) OVER () + 1) FROM x
  2724. statement error window function calls cannot be nested
  2725. SELECT sum(a) OVER (ORDER BY count(a) OVER () + 1) FROM x
  2726. # TODO(justin): blocked by cockroach#37134.
  2727. # statement error more than one row returned by a subquery used as an expression
  2728. # SELECT sum(a) OVER (PARTITION BY (SELECT count(*) FROM x GROUP BY a)) FROM x
  2729. query I
  2730. SELECT sum(a) OVER (PARTITION BY (SELECT count(*) FROM x GROUP BY a LIMIT 1))::INT FROM x
  2731. ----
  2732. 6
  2733. 6
  2734. 6
  2735. # Regression test for materialize#27293 - make sure comparing two tuple types when
  2736. # generating window functions expressions doesn't panic.
  2737. query II
  2738. SELECT
  2739. min(a) OVER (PARTITION BY (a, a)) AS min,
  2740. max(a) OVER (PARTITION BY (a, a)) AS max
  2741. FROM
  2742. (SELECT 1 AS a)
  2743. ----
  2744. 1 1
  2745. query II
  2746. SELECT
  2747. min(a) OVER (PARTITION BY (())) AS min,
  2748. max(a) OVER (PARTITION BY (())) AS max
  2749. FROM
  2750. (SELECT 1 AS a)
  2751. ----
  2752. 1 1
  2753. query T
  2754. SELECT string_agg('foo', s) OVER () FROM (SELECT * FROM kv LIMIT 1)
  2755. ----
  2756. foo
  2757. # Regression test for cockroach#37201.
  2758. query I
  2759. SELECT jsonb_agg(a) OVER (ORDER BY a GROUPS BETWEEN 5 FOLLOWING AND UNBOUNDED FOLLOWING) FROM x
  2760. ----
  2761. NULL
  2762. NULL
  2763. NULL
  2764. statement ok
  2765. CREATE TABLE abc (a INT PRIMARY KEY, b INT, c INT)
  2766. statement ok
  2767. INSERT INTO abc VALUES
  2768. (1, 10, 20),
  2769. (2, 10, 20),
  2770. (3, 10, 20),
  2771. (4, 10, 30),
  2772. (5, 10, 30),
  2773. (6, 10, 30)
  2774. query TTTTTTTTTTTT rowsort
  2775. SELECT
  2776. avg(a) OVER (),
  2777. avg(a) OVER (ORDER BY a),
  2778. avg(a) OVER (ORDER BY b),
  2779. avg(a) OVER (ORDER BY c),
  2780. avg(b) OVER (),
  2781. avg(b) OVER (ORDER BY a),
  2782. avg(b) OVER (ORDER BY b),
  2783. avg(b) OVER (ORDER BY c),
  2784. avg(c) OVER (),
  2785. avg(c) OVER (ORDER BY a),
  2786. avg(c) OVER (ORDER BY b),
  2787. avg(c) OVER (ORDER BY c)
  2788. FROM abc
  2789. ----
  2790. 3.5 1 3.5 2 10 10 10 10 25 20 25 20
  2791. 3.5 1.5 3.5 2 10 10 10 10 25 20 25 20
  2792. 3.5 2 3.5 2 10 10 10 10 25 20 25 20
  2793. 3.5 2.5 3.5 3.5 10 10 10 10 25 22.5 25 25
  2794. 3.5 3 3.5 3.5 10 10 10 10 25 24 25 25
  2795. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2796. query TTTTTTTTTTTT rowsort
  2797. SELECT
  2798. avg(a) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2799. avg(a) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2800. avg(a) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2801. avg(a) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2802. avg(b) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2803. avg(b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2804. avg(b) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2805. avg(b) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2806. avg(c) OVER (RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2807. avg(c) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2808. avg(c) OVER (ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
  2809. avg(c) OVER (ORDER BY c RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  2810. FROM abc
  2811. ----
  2812. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2813. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2814. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2815. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2816. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25
  2817. 3.5 3.5 3.5 3.5 10 10 10 10 25 25 25 25