amyuTweetPocketSQLで集計する時に、ある特定の値があるグループのみ抽出したいということがあると思います。先日、仕事でそういうことをしたいということがあったのですが、すぐには思いつかず、仕事を終えた後に思いついたので、紹介したいと思います。今回、使うのは下記のようなサンプルテーブル。します(名前と年齢は今期見てるアニメからとっています)。ここから、中学生(12~14歳)がいるグループのみのグループ番号と平均点を取得するSQLを取得するには下記のようにすればとれます。group_id上記の結果が下記です。確かに、グループに中学生のいる1と2のみの平均点が表示されました。BYで全データを集計し、HAVINGで12~14歳の年齢がいるグループのみに絞っています。14」)に一致した値があれば1という値が含まれ、無ければ0しかないということになるからです。それぞれの行にCASE文の結果を付与すると下記のようになります。test1そこからMAX関数で最大値をとってくるので1が含まれていれば1、1が含まれていなければ0となるので、1に等しい値を抽出した結果、条件に一致したグループのみを取得できることになります。0」とすることで、取得することができます。HAVINGを使わなくても、サブクエリーを使うことで同じことができます。group_idただ、HAVINGを使ったほうがシンプルなので、基本的にはHAVINGを使ったほうがいいと思います(実行計画のコストも、HAVINGを使ったほうが少しだけ低いようです)。HAVINGは今までほとんど使ってこなかったのですが、使い始めると結構便利なことに気づきました。応用もできそうなので、使いこなしていきたいです。1」にしようとしていました。14」でもいいことに気づき、中学生が含まれるかどうかという条件に変更しました。いう条件は、シンプルに考えられるようになりたいです。コメントをキャンセルメールアドレスが公開されることはありません。世界一のアニメーション企業の今まで語られなかったお金の話(ブクログレビュー)当サイトは以下のサービス、ツールによって運営されています。