- PR -

MySQL 期間 抽出 集計

1
投稿者投稿内容
SASA
会議室デビュー日: 2003/10/02
投稿数: 17
投稿日時: 2004-12-07 00:32
年月日(例2000-01-01)と金額のテーブルにて

十年間のデータが入っているテーブルで期間の抽出を行いたいのですが
単純に月ごとの集計を見たい場合は

select date_format(年月日,'%Y/%m') as 年月,sum(金額) as 金額 from `テーブル名` Group by date_format(年月日,'%Y/%m')

で取り出せたのですが

これを例えば二十日締めで一覧抽出集計を行いたいのですが、いくら悩んでも思うようにいきません。

すみませんが、よろしければ御教授頂けないでしょうか。
よろしくお願いいたします。
MeijiK
常連さん
会議室デビュー日: 2005/12/26
投稿数: 24
お住まい・勤務地: 東京都
投稿日時: 2007-01-06 02:12
MySQLならこんな感じでどうですか?

まず年月日から日付だけとりだして、21より小さい年月日はそのままね21以上の年月日は
一ヶ月加えて、そこから(SASAさんが行っているように)年月を抽出してグルーピングします。

# カラムとグルーピング条件は同じものを書いてます。

SELECT date_format( if(date_format(年月日, '%d') < 21, 年月日, DATE_ADD(年月日, INTERVAL 1 MONTH)) , '%Y/%m') as "年月", sum(金額) as "金額"
FROM `テーブル名`
GROUP BY date_format( if(date_format( 年月日, '%d') < 21, 年月日, DATE_ADD(年月日, INTERVAL 1 MONTH)) , '%Y/%m' );
忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-01-07 00:19
MySQLのバージョンは何ですか?

母体データ量は、何件くらいあるのでしょうか?
「group by」で列名でなく式を書いてしまうと、インデクスが利用されません。
性能はどうでもいいのですか?
1

スキルアップ/キャリアアップ(JOB@IT)