PostgreSQLで、日付別に集計したい場合の質問です。


ここでは簡単に、下記のようなテーブルがあるとします。

CREATE TABLE おこづかい帳(
 id serial,
 購入日時 timestamp without time zone NOT NULL,
 購入店名 text,
 購入金額 int NOT NULL
)

※レシートにある内容をそのまま INSERT している感じです。

これを、1日ごとに購入金額を SQL文で完結した集計を行いたい場合、どのような集計方法が考えられますでしょうか。


いま私が使用している方法は

SELECT
 FLOOR((EXTRACT(epoch FROM 購入日時)+32400)/86400) AS 購入日,
 sum(購入金額) AS 購入金額

FROM おこづかい帳
GROUP BY 購入日
ORDER BY 購入日 ;

(タイムゾーン誤差を回避するために+32400を付けています)

といった形を使っているのですが、
より便利な方法はありますでしょうか。
いろんな手段を知りたいです。
宜しくお願いいたします。

回答の条件
  • 1人50回まで
  • 登録:2007/01/24 23:46:54
  • 終了:2007/01/27 12:53:06

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/01/24 23:55:11

ポイント35pt

データ型書式設定関数


SELECT
  to_char(購入日時,'YYYY/MM/DD') AS 購入日,
  sum(購入金額) AS 購入金額
  FROM おこづかい帳
  GROUP BY 購入日
  ORDER BY 購入日 ;
id:kamiochiai

ありがとうございます to_char

2007/01/25 01:01:37

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/01/24 23:55:11ここでベストアンサー

ポイント35pt

データ型書式設定関数


SELECT
  to_char(購入日時,'YYYY/MM/DD') AS 購入日,
  sum(購入金額) AS 購入金額
  FROM おこづかい帳
  GROUP BY 購入日
  ORDER BY 購入日 ;
id:kamiochiai

ありがとうございます to_char

2007/01/25 01:01:37
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/01/25 00:00:58

ポイント35pt

日付/時刻関数と演算子

SELECT
 date_trunc('day',購入日時) AS 購入日,
 sum(購入金額) AS 購入金額
  FROM おこづかい帳
  GROUP BY 購入日
  ORDER BY 購入日 ;

購入日の算出のバリエーションですね。


前回のは結果がテキスト型、今回のは timestamp のままという違いがあります。

id:kamiochiai

ありがとうございます date_trunc

2007/01/25 01:01:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません