分OLAP関数と集約関数を組み合わせるこれでOLAP関数の基本は押さえられました。今度はもう少し踏み込んだ使い方を勉強しましょう。一度同じAccountsテーブル(図1)を使い,記録日ごとに入金額の大きかった順のランキングを求めます。今度は口座の違いは気にせず,あくまで日付だけでまとめます。先に結果を紹介すると,図6のようになります。入金が多かったのは1月17日です(図7⁠)⁠。1月17日の入金額の内訳ランキングをつける関数は,先ほど紹介したRANK関数を使えばOKです。rank_sum列はこれで求めます。BYのキーに使うだけですので非常に簡単です。問題は,この2つの処理を同時にSQLの中で組み合わせられるかという点です。結論から言うと,何の問題もなくできます。順を追って考えてみましょう。処理日ごとに処理金額の合計を算出します。これは別に難しくありません(リスト6,図8⁠)⁠。sum_prc_amt2010-01-1654,0002010-01-17130,0002010-01-1822,0002010-01-19-469,0002010-01-20-76,500この結果にランキングをつければよいわけです。それでは,2つの軸に沿って考えましょう。第一の軸(カット):どんなキーでこの結果をカットするべきか?結果全体を一つのウィンドウとみなすため,カットは不要。第二の軸(走査順序):どんなキーで走査するべきか?もちろん,処理金額の合計の降順。SUM(prc_amt)の降順ここまでわかれば,問題は解けたも同然です。最終的な答えはリスト7のようになります。BY句にSUM(prc_amt)という集約関数を指定しているのが見た目に違和感があるかもしれませんが,論理的にこれで正しいことは,もう読者のみなさんもおわかりでしょう。BY句のキーとして利用できるのです。sum_prc_amtのように,SELECT句で指定した列の別名を指定したいと思うかもしれませんが,残念ながらこれは構文エラーとなって動きません。関数はいつ計算されるのかOLAP関数を記述できる場所は,基本的にSELECT句と考えてください。BY句にも構文上は書くことができますが,実際にはほとんどそういう使い方はしません。通常の関数と違いWHERE句に書くことはできません。この使える場所の制限は,OLAP関数がDBMS上で実行されるタイミングに関係しています。いうのは,一般的に次のような順序で実行されます。BY:結果のソートを行うこの一連の処理ステップの中で,OLAP関数が実行されるのは,5です(6も可能性としてはありますが,前述のように実際はまれです⁠)⁠。BY句による集約が全部終わったあとに,その結果に対して適用される関数なのです。FROM句で指定したナマのテーブルに対して適用されるものではないのです。BY句による集約をしなければ,たまたまテーブルそのものに適用されているように見えるだけです。BY句の集約結果に適用することもできます。それが可能な理由は,この関数があくまでSELECT句で―つまりSQL全体の処理ステップの中では終わりのほうで―実行されるからです。BYと組み合わせると,原理上ソートも2回走る)ことを忘れないでください。著者プロフィールミックSI企業に勤務するDBエンジニア。データウェアハウス業務に従事している。自身のサイト「リレーショナル・データベースの世界」でデータベースとSQLについての技術情報を公開している。Press』で「SQLアタマアカデミー」を連載中。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。