skillup

技術ブログ

Database

SQL基礎 複雑なSQLの組み方

投稿日:2016年10月16日 更新日:

SQLの本を見ますとかなり複雑なSQLが書かれていることが多いです。

これは頑張っても無理では・・・と思っていましたが、ポイントしては

  • 原則として必ず図に書く
  • まずは問題を細かく分割する
  • 細部から切り分けて部分を組み立てる(多くの場合SELECTで細かいテーブルに分ける)
  • 出力対象が値か単行か表をチェック
  • 変数がきつい場合はまず具体値で試す
  • それを組み合わせていく

こんな感じでしょうか。確かに私も実務でちょっと複雑なSQLを書いたときは図に書き出してやったところ問題点がすぐにつかめました。

困難は分割せよ、どんな学習もコツは同じですね。

本日新しく覚えたSQL構文

SIGN()

引数が正の数ならば1を返し、マイナスの数ならば-1を返す。同じ場合や文字は0を返す。

MySQL関数リファレンス 符号を調べる (SIGN)

rows between ウィンドウ開始点 and ウィンドウ終了点

分析関数。開始点と終了点を記して、その中での集計を行う。

SQL分析関数をさらに深く追求してみよう (1/2)

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データ構造の基礎知識 後編 木構造

データベースの学習をしていたときの復習です。 データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト データ構造の基礎知識 中編 ハッシュ 今回はもう少し複雑な「木構造」について考えてみます。 …

no image

GlassFishでDB接続

JavaEEではアプリケーションサーバーとしてGlassFishを使いますが、先日、GlassFishを通さないとJavaEEでDBが動かせないということを知りました。そのためJavaEEではデータベ …

no image

DBの基礎 テーブルとは

CSSを学習したあとはデータベースの学習などを。 参考図書:「達人に学ぶDB設計指南書」基本的にはこれを読んでいきます。が、現状よくわからないところは飛ばしていきます・・・ Contents1 テーブ …

no image

サブクエリ 分析関数の代替案として

今回は分析関数系のネタです。 以前にも分析関数を少し学習しましたがMySQLにはないので、サブクエリを使い書くことになります。 下記のような入出金講座があるとします。 Accounts prc_dat …

no image

アンチパターン バインド変数の未使用+直積組み合わせ+データ量爆発+インデックス関連

本日はSQLコーディングに関して。 ここら辺は実際にプログラムを書く際に重要になってくるネタ。 Contents1 バインド変数1.1 デメリット1.2 対策2 直積により組み合わせが爆発する2.1 …