回答編集履歴
2
加筆修正
    
        answer	
    CHANGED
    
    | @@ -5,4 +5,10 @@ | |
| 5 5 | 
             
            date_trunc()かけたあとでもtimestamp型を維持することに注意です。
         | 
| 6 6 |  | 
| 7 7 | 
             
            `date_part(text, timestamp)`だと、任意の日付要素を抽出してdouble precision型を返します。
         | 
| 8 | 
            -
            こちらでもgroup by句に使えます。
         | 
| 8 | 
            +
            こちらでもgroup by句に使えます。
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ちなみに、SELECT文のたびにこの手の精度丸め関数を使うのは
         | 
| 11 | 
            +
            動くけど少々時間がかかりやすいです。
         | 
| 12 | 
            +
            テーブル構造を変更できるなら、
         | 
| 13 | 
            +
            抽出する粒度に合わせたグルーピング用データ(年とか月とか)もカラムに持たせて、
         | 
| 14 | 
            +
            インデックスをかけると良いでしょう。
         | 
1
加筆修正
    
        answer	
    CHANGED
    
    | @@ -1,4 +1,8 @@ | |
| 1 1 | 
             
            PostgreSQLであれば、`date_trunc(text, timestamp)`関数で任意の精度に切り捨てることが出来るので、
         | 
| 2 2 | 
             
            `date_trunc('day', timestamp '2001-02-16 20:38:40')`は「2001-02-16」になりますし、
         | 
| 3 3 | 
             
            `date_trunc('month', timestamp '2001-02-16 20:38:40')`は「2001-02-01」になります。
         | 
| 4 | 
            -
            これをgroup by句に加えれば、任意の精度に切り捨てて足し込んだり平均を取ったりできますね。
         | 
| 4 | 
            +
            これをgroup by句に加えれば、任意の精度に切り捨てて足し込んだり平均を取ったりできますね。
         | 
| 5 | 
            +
            date_trunc()かけたあとでもtimestamp型を維持することに注意です。
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            `date_part(text, timestamp)`だと、任意の日付要素を抽出してdouble precision型を返します。
         | 
| 8 | 
            +
            こちらでもgroup by句に使えます。
         | 
