SQL関連めも
SQL文に関するtipsがいくつかたまったので、まとめのページをおきます。
「」付きのリンクは、外部の参考サイトです。
- MySQLでの日付期間比較
日付や時刻で、開始と終了の期間で比較したいとき、4つの日付時刻値をどう比較するかの考え方を記録しておくことにしました。
MySQLにはきっちりと書式の決まったカラム型があるけど、入力や比較時に自動変換があるので、「MySQLの日付比較:比較対象のカラムは型を意識しなければならない。」なども、ご参考ください。 - SQLiteでの日付期間比較
日付や時刻で、開始と終了の期間で比較したいとき、4つの日付時刻値をどう比較するかの考え方を記録しておくことにしました。
また、こちらのページではSQLiteでの日付時刻データの扱い方も紹介しています。 関数記述については、「SQLiteの日付時刻関数」などを御参考ください。 - SQLiteでの連続日付view作成=カレンダーテーブル
日付でデータを集計すると、通常は、データの存在する日付しか取得表示出来ないが、 連続日付で表にしたい場合、view を作って、取得データテーブルと結合するとよい。 SQLiteでのSQL文記述法を紹介。
- SQLiteでの曜日計算
SQLiteにおいては、日付時刻関連関数は限られており、曜日を得るには、 strftime("%w", 日付文字列 ) で数値を得るしかないので、 さらに日本語の漢字表記や英字3文字略号に変換する書式や、 ある期間に含まれる特定曜日の判定などの方法を紹介する。
- MySQLでヒストグラム作成
MySQLには、ヒストグラム作成関数はないので、ヒストグラムにするための範囲データをテーブルに作成して、集計する方法を紹介。 また、クロス集計をprocedureで行う方法も紹介する。
- 入れ子集合モデルでサイトマップ by SQLite
サイトマップに必要なテーブル構成と、ツリー構造実現に、入れ子区間モデルを使った場合のSQLiteでの構文紹介。
参考文献
「SQLで木と階層構造のデータを扱う(1)―― 入れ子集合モデル」主にoracleでの構文紹介。
「SQLで木構造を扱う~入れ子区間モデル」に区間値を実数で扱う方法が紹介されている。SQL構文は標準SQLでの記述。 - 入れ子集合モデルでサイトマップ by MySQL
サイトマップに必要なテーブル構成と、ツリー構造実現に、入れ子区間モデルを使った場合のMySQLでの構文紹介。
参考文献は同上と、
「階層化されたデータを MySQLで扱う(Managing Hierarchical Data in MySQL)」 前半に隣接モデル、後半2/3は、nest setの解説がある。 - ランク付け by MySQL
MySQLにはランク関数がないので、ランク付けのために必要なSQL文を概観してみた。 自己結合 left join を使う場合と、相関サブクエリを使う場合とを、explain での結果とともに提示してみた。
- 抜けデータ補完 by MySQL
日付や連番データで、抜けのある行を補完する方法。 通常、連番テーブルや、連続日付テーブルを別に用意することになるが、0から9の10行のみの数値テーブルがあればかなり柔軟に対応できる。
- カンマ区切りデータを使いやすくする:by MySQL
カラム値を「カンマ区切りデータ」にしてしまった場合いろいろと集計しにくいので、対処法を考えてみた。テーブル変更方法と、変更後データをどのように集計表示するかを示してみた。
[最終更新日 ]