• ベストアンサー

[MYSQL] GROUP BY による結果レコードの取得について

こんにちは。 今回は MYSQL の GROUP BY によって、複数レコードのグループ化を行った場合についてお尋ねしたいです。 id, val という二つのフィールドをもつテーブルがあったとして、複数レコードに対して、id でグループ化を行うとします。 その時、val の合計を求めたいのですが、 SELECT id,SUM(val) FROM tablename GROUP BY id となる SQL構文により SUM(val) を取得します。 この場合、SUM(val) を降順にソートした結果レコードを得ることはできますでしょうか? 通常は ORDER BY を用いてこれを行うと思うのですが、このケースではよくわかりません。 また、PEAR によって、これらの結果レコードを連想配列で取得しようと思っています。 結果レコード $rs に対して、 $data = $rs->fetchRow(DB_FETCHMODE_ASSOC); とすると、 $data の連想配列のキーが SUM(val) となってしまいます。 変数に括弧が含まれるのは具合がよくないので、これらを回避する方法はありませんでしょうか? 以上2点おわかりの方がいればお答えいただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

SQLのほうだけ。 >この場合、SUM(val) を降順にソートした結果レコードを得ることはできますでしょうか? 序数で指定 SELECT id,SUM(val) FROM tablename GROUP BY id ORDER BY 2 desc

shu_a
質問者

お礼

検索によって詳しいマニュアルを見つけました。 PostgreSQL の方ですが、ようやく理解できました。 http://www.postgresql.jp/document/pg702doc/user/sql-select.htm ありがとうございました。

shu_a
質問者

補足

ありがとうございます。 降順にソートされた結果レコードを得ることができました。 一度、ORDER BY SUM(val) DESC といった方法で行ったのですが、できませんでした。 また HAVING も試しに用いてみたのですができませんでした。 この序数はどのようなケースで使うことができるのでしょうか?また、この数字は何を示しているのでしょうか。(単に2番目としか思いつかないのですが・・・) MYSQL のリファレンスを見たのですが、序数についての記述を探し当てることができませんでした。 加えて質問になりますが、教えていただけないでしょうか。

その他の回答 (1)

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

as句ではダメでしたっけ? sum(val) as @@@

shu_a
質問者

お礼

ありがとうございました。 指定された方法で、置き換えができました。

関連するQ&A