MYSQLを使っています。
【売上テーブル】
|| 日付 || 金額 ||
-----------------
|| 2011/01/01 || 100 ||
|| 2011/01/01 || 200 ||
|| 2011/01/02 || 600 ||
・
・
・
|| 2012/12/31 || 500 ||
|| 2012/12/31 || 100 ||
SELECT SUM(金額)
FROM 売上テーブル
WHERE 日付 BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY DATE_FORMAT(日付, '%Y/%m')
で月初から月末のデータを表示させることはできますが、
2011/01/10~2011/02/09を一か月として
以降は
2011/02/10~2011/03/09
2011/03/10~2011/04/09
・
・
・
2011/12/10~2012/01/09
といった感じに1年間のデータを表示させる方法がわかりません。
どうぞ宜しくお願いします。
No.1
- 回答日時:
各分割の期間がformat関数などで簡単には指定できない場合は、master table として、各期間の開始と終了を保持しておくと便利です。
create table `period_master` (
start_date date
,end_date date
,name varchar(20)
, check (start_date < end_date)
,primary key (start_date , end_date)
);
insert into `period_master` values ('2011-01-10', '2011-02-09' , '2011年1月')
,('2011-02-10', '2011-03-09' , '2011年2月')
,,, /* 中略 3月から10月まで同様に */
,('2011-11-10', '2011-12-09' , '2011年11月')
,('2011-12-10', '2012-01-09' , '2011年12月') ;
select master.name , sum(sales.`金額`)
from `売上テーブル` as sales inner join `period_master` as master
on sales.`日付` between master.start_date and master.end_date
group by master.name
No.2ベストアンサー
- 回答日時:
一旦サブクエリで月集計した結果をグループ化して使えば可能です。
月集計では日の9以下は-1ヶ月としています。
SELECT x.tmp,SUM(x.金額)
FROM
(SELECT
日付,
CASE WHEN DATE_FORMAT(日付,'%e') < 10 THEN DATE_FORMAT(日付 - interval 1 month, '%Y/%m') ELSE DATE_FORMAT(日付, '%Y/%m') END tmp,
金額
FROM mysql.uriage) x
WHERE x.日付 BETWEEN '2011-01-10' AND '2011-12-31'
GROUP BY x.tmp;
※サブクエリ部分だけ結果を見ればどの日付がどの月に集計されたかがわかりやすいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL あっってますか?うまくいきません教えてくださいお願いします?? 2 2023/07/01 13:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです教えてくださいお願いし...
-
SQLです。下記の問合せを行うク...
-
下記の問合せを行うクエリを、 ...
-
MySQLで日付(date)型のdefaul...
-
複数のテーブルから値を合計出...
-
ここで「interval」は どんな働...
-
MySQLのdatetime型に0月0日を格納
-
サブクエリを使わない方法
-
SQL 重複しないJoinの仕方を教...
-
<SQL>重複しているデータの場合...
-
mysqlのif文かcase文で複数条件...
-
SQLです下記の問合せを行うクエ...
-
SQLローダーCSV取込で、囲み文...
-
SQLで条件にヒットしたレコード...
-
単一グループのグループ関数で...
-
select文の実行結果に空白行を...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
レコードの登録順がおかしい
-
Oracleで「文字が無効です」の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
SQL 重複しないJoinの仕方を教...
-
MySQLで特定のグループの上位3...
-
直近1ヶ月に誕生日を迎える社員...
-
最新の日付と2番目の日付のデー...
-
SQLで、同じ値が何回連続す...
-
DISTINCTROWについてです。
-
mysqlでunixtimeによる日付範囲...
-
MySQL「 INT」「 DATETIME」違い
-
mysqlに格納されている日付のデ...
-
NULLは表示順最下位
-
【意見募集】文字列カラムに対...
-
mysqlのif文かcase文で複数条件...
-
MySQLのtimestamp型について
-
mysqlでクロス集計を取りたいが...
-
Mysqlで最新の日付を持つデータ...
-
日付や日時を格納する場合の型...
-
型変換
-
SQL文を教えてください。
おすすめ情報