Edited at

riak-ts SELECT関連のクエリサンプル

More than 1 year has passed since last update.


概要


  • 検索時に使いそうなriak-tsのクエリのメモ


SQL


  • 他のDBと同じでSELECTでデータの参照を行う

  • WHEREでキーにしている時間の範囲を指定する必要がある

  • サブクエリとかややこしいGROUP BYとかしなくていいのですごく楽

  • 早い


時間指定で参照

> SELECT * FROM Hoge WHERE time < 1515254386 AND time > 1515250386;


  • 参照しようとするカラムが多いと省略して表示される

> SELECT time, column_1 FROM Hoge WHERE time < 1515254386 AND time > 1515250386;


  • カラム指定できる

  • asはできない


時間 + カラム指定で参照

> SELECT * FROM Hoge WHERE time < 1515254386 AND time > 1515250386 AND column_1 = 'fuga';


  • 特定の範囲の時間に特定のデータを持つrowを取得できる

  • この辺までは他のDBと一緒


特定の範囲内の最新のrowを参照

> SELECT max(time), column_1 FROM Hoge WHERE time < 1515254386 AND time > 1515250386 AND column_1 = 'fuga';


  • SELECTでmax(time)すると最新のtimeを持つrowのみを参照できる


特定の範囲のrowの数を取得する


  • 上記のと組み合わせてrowの数を取得できる

> SELECT max(time), column_1, count(time) FROM Hogehoge WHERE time < 1515254386 AND time > 1515250386 AND column_1 = 'fuga';


  • COUNTが使える


特定の範囲のrowの特定のカラムの積算、平均を求める


  • 上記のと組み合わせてrowのカラムの積算と平均を求めることもできる

> SELECT max(time), column_1, count(time), sum(column_2), avg(column_2) FROM Hogehoge WHERE time < 1515254386 AND time > 1515250386 AND column_1 = 'fuga';


  • 使えるのはSUM, AVG

  • 使用できる関数はhelp sql selectで見れる


GROUP BYでまとめて取得


  • 複数のデータを集計して取得したい場合はGROUP BYを使う

> SELECT id, AVG(column_1) FROM Hogehoge WHERE time < 1515254386 AND time > 1515250386 GROUP BY id;


  • GROUP BYも使える

  • LIMIT OFFSET, ORDER BYなどもある