人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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を付けています)

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

●質問者: kamiochiai
●カテゴリ:ウェブ制作
✍キーワード:AS GROUP postgreSQL SELECT SQL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント ベストアンサー

データ型書式設定関数


SELECT
 to_char(購入日時,'YYYY/MM/DD') AS 購入日,
 sum(購入金額) AS 購入金額
 FROM おこづかい帳
 GROUP BY 購入日
 ORDER BY 購入日 ;
◎質問者からの返答

ありがとうございます to_char


2 ● b-wind
●35ポイント

日付/時刻関数と演算子

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

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


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

◎質問者からの返答

ありがとうございます date_trunc

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ