2011年4月28日

[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


投稿者 xml-rpc : 2011年4月28日 15:27
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103355
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。