mysql:15579
From: Mikiya Okuno <Mikiya Okuno <mikiya.okuno@xxxxxxxxxx>>
Date: Thu, 28 Apr 2011 15:27:12 +0900
Subject: [mysql 15579] Re: 最新 10 件の内でベスト 5 の合計を取りたい
奥野です。 ポイントは次の2点ですね。 ・結果を得るには異なるカラムでソートをする必要がある。 ・LIMIT句で結果を絞り込んでからSUMで合計をとる。 いずれの場合もFROM句のサブクエリを利用する必要がありますので、 FROM句のサブクエリを2回利用する今のクエリ以外に方法はないと 思います。 ちなみに、 > MySQL Version 5.1.16 バージョンは古過ぎるように思います。本番環境で利用されるなら、 メンテナンスを考えるとせめてGA版にしたほうが良いと思います。 ではでは。 -- 奥野 幹也 http://www.google.com/profiles/mikiya.okuno http://nippondanji.blogspot.com/ http://twitter.com/nippondanji On 04/28/2011 02:34 PM, 岩崎 誠司 wrote: > 岩崎と申します。 > いつも皆様MLを参考にさせていただいてます。 > ちょっと皆様のお知恵を拝借したいと思い投稿しました。 > 表題にもありますが、該当する「num」の一定期間の最新のデータ > 10件のうち、diffのベスト5の合計を取りたいので以下のようなクエリで > 取得しましたが、SELECTを何回も重ねるので > スッキリせずに分かりにくいクエリになっています。 > 他に方法はないでしょうか、よろしくお願いします。 > ちなみにベスト5のデータを取るのでしたら、「AS d」の()内の > クエリで取れます。 > SELECT SUM(di) > FROM > (SELECT di FROM > (SELECT diff AS di > FROM hd > WHERE num = 1 > AND day BETWEEN '2010-04-01' AND '2011-03-31' > ORDER BY day DESC LIMIT 10 > ) AS s > ORDER BY di > LIMIT 5 > ) AS d > > テーブル作成文 > CREATE TABLE `hd` ( > `id` int(11) NOT NULL AUTO_INCREMENT, > `num` int(11) NOT NULL, > `day` date DEFAULT NULL, > `diff` int(11) NOT NULL, > PRIMARY KEY (`id`) > ) ENGINE=MyISAM > 環境 > OS Windows7 professional SP1 > MySQL Version 5.1.16
@ 15578 2011-04-28 14:34 [岩崎 誠司 <iwasaki_] 最新 10 件の内でベスト 5 の合計を取りたい -> 15579 2011-04-28 15:27 ┗[Mikiya Okuno <mikiya] 15580 2011-04-28 16:58 ┗[岩崎 誠司 <iwasaki_]