SQL
stockdb のデータをもとに、全銘柄、全期間の日ごとの各種平均値、標準偏差を計算するSQLを書いたのでメモ。 終値、出来高、価格変動率のそれぞれについて、過去3,5,10,15,25,50,75日の平均値と標準偏差を一気に算出します。 それなりに時間はかかります。確…
「cast( as )」でテーブル内の文字列型のカラムを数値に変換して取り出すことができます。↓のようなテーブルがあるとして、 $ db2 "describe table test" Column Type Type name schema name Length Scale Nulls ------------------------------ --------- -…
Mergeを使うと、 複数のテーブルを比較して、 マッチする行があれば、更新 行がなければ挿入 といった操作ができます。 例 以下は、 テーブル「test」と「test2」を比較して(カラムのラインナップは同じ) テーブル「test」と「test2」と同じ「name」を持つ行…
昨日の続き。User's Forum for DB2 Japan - タイムスタンプを持つテーブルをyear,monthでgroupingしたも...を参考に、共通表式を使った再帰SQLの無限ループを指定階層辿ったら止めるようにしてみます。戦略的には、 再帰して見つけたデータを格納する中間表(…
DB2の共通表式中のFROM節では共通表自体を指定することができ、このとき共通表式は再帰共通表式となります。再帰共通表式を使うことで、階層構造を持つテーブルデータを再帰的に探索したりできます。 例 例えば、以下のようなファイルの関連があるとして、こ…
共通表式を使うと、検索結果を名前付きの表として定義して、後に続くselect文で参照することができます。 例えば次のようなSQLは、 select * from ( select distinct * from A ) as X order by case when id is null then 0 else 1 end, id 共通表式を使って…
↓みたいなテーブルがあって、 create table A ( id BIGINT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY(id) ); create table B ( id BIGINT NOT NULL AUTO_INCREMENT, a_id BIGINT NOT NULL, name VARCHAR(20) NOT NULL DE…
データベースを使って、運用中に動的に属性を拡張できるような仕組みを作りたい場合の設計メモです。 拡張属性に対応する「キー」と「値」のテーブルを追加で用意して、 拡張元のテーブルと関連づける 感じで実現します。 テーブル設計 kittenテーブルの属性…
UNIONで、複数のSQL実行結果の「和」を返します。構文: <SQL文1> union <SQL文2>; サンプル: select name from kittens where id between 1 and 2 union select name from kittens where id between 2 and 3; データ: mysql> select * from kittens; +----+-------+---------</sql文2></sql文1>…
内部結合と外部結合について。 例は以下のテーブルに対してSQLを発行した結果です。 mysql> select * from kittens; +----+-------+---------+ | id | name | type_id | +----+-------+---------+ | 1 | mii | 1 | | 2 | tora | 2 | | 3 | shiro | 1 | | 4 |…
select の from にテーブルを並べると、テーブル同士が総当たりで結合されます。さらにwhereで検索条件を指定して絞り込むと、内部結合した場合と同じような出力を得ることができます。 結合するテーブル mysql> select * from kittens; +----+-------+-----…