SQLite3窓関数 窓関数はover句を省略するとエラーになる(Error: misuse of window function *)
「over
,filter
句を省略すると通常の集計関数として機能する」らしい。が、探してみたら全滅だった。騙された。
データ
create table student_grades( class text, name text, point integer ); insert into student_grades values ('A', 'Adati', 53), ('A', 'Itou', 21), ('A', 'Uehara', 93), ('B', 'Kato', 82), ('B', 'Kida', 98), ('B', 'Kurihara', 66), ('B', 'Kei', 75), ('B', 'Koi', 75);
11ある窓関数をover
句を使わずに実行してみる。
row_number()
select row_number() from student_grades;
Error: misuse of window function row_number()
rank()
select rank() from student_grades;
Error: misuse of window function rank()
dense_rank()
select dense_rank() from student_grades;
Error: misuse of window function dense_rank()
percent_rank()
select percent_rank() from student_grades;
Error: misuse of window function dense_rank()
cume_dist()
select cume_dist() from student_grades;
Error: misuse of window function cume_dist()
ntile(N)
結果セットを複数のバケットに分けて、その番号を振る。
select ntile(3) from student_grades;
Error: misuse of window function ntile()
lag(expr)
,(expr, offset)
,(expr, offset, default)
前のレコードを取得する。
select lag(point) from student_grades;
Error: misuse of window function lag()
lead(expr)
,(expr, offset)
,(expr, offset, default)
1つ次のレコードを取得する。
select lead(point) from student_grades;
Error: misuse of window function lead()
first_value(expr)
先頭レコードを取得する。
select first_value(point) from student_grades;
Error: misuse of window function first_value()
last_value(expr)
末尾レコードを取得する。
select last_value(point) from student_grades;
Error: misuse of window function last_value()
nth_value(expr, N)
点数が2番目のレコードを取得する。
select nth_value(point, 2) from student_grades;
Error: misuse of window function nth_value()
所感
over
句を省略しても使えなかった。どゆこと? 翻訳マジック? もしかして窓関数の代わりに集計関数を使えるって意味だったの?
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQLite3学習 構文まとめ
- SQLite3関数の一覧と分類
- SQLite3コア関数の一覧と分類
- SQLite3コア関数 quote
- SQLite3コア関数 lower,upper
- SQLite3コア関数 trim,ltrim,rtrim
- SQLite3コア関数 replace
- SQLite3コア関数 glob
- SQLite3コア関数 like
- SQLite3コア関数 printf
- SQLite3コア関数 substr
- SQLite3コア関数 length
- SQLite3コア関数 instr
- SQLite3コア関数 unicode,char
- SQLite3コア関数 soundex
- SQLite3コア関数 likelihood,likely,unlikely
- SQLite3コア関数 abs
- SQLite3コア関数 max,min
- SQLite3コア関数 random
- SQLite3コア関数 round
- SQLite3コア関数 hex
- SQLite3コア関数 randomblob
- SQLite3コア関数 zeroblob
- SQLite3コア関数 ifnull,nullif,coalesce
- SQLite3コア関数 changes,total_changes,last_insert_rowid
- SQLite3コア関数 typeof
- SQLite3コア関数 load_extension
- SQLite3コア関数 sqlite_*
- SQLite3日時関数(date,time,datetime,julianday,strftime)とcurrent_date,current_time,current_timestamp
- SQLite3集計関数(avg,count,group_concat,max,min,sum,total)
- SQLite3窓関数