KB)連載「分析関数の衝撃」では、Oracleの分析関数を主に扱いました。MySQLで、Oracleの分析関数と同じ結果を取得するSQLの考え方と、処理のイメージを解説します。今回は、Range指定およびRows指定のSum関数と同じ結果を取得するSQLを扱います。Rows指定のSum関数(Unbounded指定)最後に参考資料はじめに本稿では、Oracleの分析関数の中で、Range指定およびRows指定のSum関数と同じ結果を取得するSQLを扱います。5.1.28で動作確認しました。10.2.0.1.0でも動作確認しました。その他、次の環境でも応用が可能です。最初は、Range指定のSum関数と同じ結果を求めるSQLについてです。テーブルのデータと、出力結果を考えます。80同じIDで、Seqが自分より1小さい行から2大きい行までのValの合計を求めます。言いかえれば、Oracleの下記の分析関数を使ったSQLと同じ結果を取得します。120相関サブクエリでの、Range指定の分析関数の代用は簡単で、下記が答えとなります。ID,Seq;相関サブクエリのbetween述語で、「IDが同じであること」および「Seqが自分より1小さい値以上、かつ、自分より2大きい値以下であること」を条件とし、Sum関数でValの合計を求めています。SQLのイメージは下記です。OracleSQLパズルの運営者。AtCoderレーティングは1204(水色)。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。