- - PR -
PostgreSQLで『各月の上位3件ずつ』
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-24 12:14
お世話になります。
SQL文についての質問なのですが、Timestamp型とInteger型の2つのカラム(timeColumn,intColumn)を持つテーブル(sourceTable)に、不特定期間のデータがあるとして、そのデータを日毎にintColumnの上位3件ずつ表示させるということは1つのSQL文で可能でしょうか? 例えば3件ずつではなく1件ずつならば、以下のようなSQL文で実現できると思うのですが。 SELECT date_trunc('day',timeColumn) AS timeInfo,MAX(intColumn) FROM sourceTable GROUP BY timeInfo ORDER BY timeInfo; 使用しているPostgreSQLは7.4です。 お判りになる方、宜しくお願いします。 | ||||||||
|
投稿日時: 2006-02-24 12:44
こんなんどうでしょうか?
test3テーブルはvalue,col1と共に文字列型ですが。
| ||||||||
|
投稿日時: 2006-02-24 13:24
where句でサブクエリで順位を求めて、
3位以内のデータを対象とすればできます 同一timeColumnでintColumnが等しいデータが存在しないなら、 夏椰|。σ)oさんの方法でもいいかと | ||||||||
|
投稿日時: 2006-02-24 14:13
夏椰|。σ)oさん、明智重蔵さん、ご返答ありがとうございます。
夏椰|。σ)oさんにご紹介いただいた方法は、上手く動きそうなのですが、 上手く動く理屈が理解できませんのでもっと勉強して理解を深める所存です。 明智重蔵さんにご紹介いただいた方法も、サブクラスで各日の順位を求める方法を探して試みてみます。 お二方ありがとうございました。 | ||||||||
1
