プロが教える店舗&オフィスのセキュリティ対策術

こんなテーブルがあったとして、

テーブル名:shohin
-------------------
type:文字列
create_date:日付


こんなデータになっていたとして

type| create_date
----+-----------
abc | 2004/02/01
abc | 2004/02/02
abc | 2004/02/03
hhh | 2004/01/30
xxx | 2004/01/12
xxx | 2004/01/13
xxx | 2004/01/14
xxx | 2004/01/15
xyz | 2004/01/01
xyz | 2004/01/05


このようなデータを出力したいのですが…
(typeで集計して、create_dateの一番新しい日付でソート)

type | count | create_date
-----+-------+-----------
abc | 3 | 2004/02/04
-----+-------+-----------
hhh | 1 | 2004/01/30
-----+-------+-----------
xxx | 4 | 2004/01/15
-----+-------+-----------
xyz | 2 | 2004/01/05

これを一発で書くSQLって可能でしょうか?
副問い合わせを使えば出来るような気がするのですが、Group By した結果からさらに最新の日付を取得してソートというのがどうも上手く書けませんでした。
お分りになる方がいらっしゃいましたら、ぜひともご教示願います。

A 回答 (1件)

最新日付の取得はMAX()関数、ソートはORDER BY句を使用すれば出来ます。


http://www.postgresql.jp/document/pg746doc/html/ …
http://www.postgresql.jp/document/pg746doc/html/ …

例) -----------------------------------------------------
SELECT type, COUNT(*), MAX(create_date) FROM shohin GROUP BY type ORDER BY MAX(create_date) DESC
    • good
    • 0
この回答へのお礼

なるほど~。
ORDER BY でMAXを使えるとは知りませんでした。
これは便利ですね。

非常に参考になりました。ありがとうございました。

お礼日時:2005/01/12 07:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!