- ベストアンサー
月ごとの集計について
以下のようなテーブルで月毎の集計を1回のSQLで取得する方法はありますでしょうか。 ----------------------- 日付 |商品番号|価格 ----------------------- 2006/07/01|001 |\210 2006/07/02|012 |\350 2006/07/05|003 |\100 2006/06/01|014 |\120 2006/06/09|014 |\120 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- SQL 集計について
集計方法がどうしてもわからないのでご教授ください。 下記のテーブルを持っています。 テーブル1では日々の売上金額を管理し、 テーブル2では一週間の日付が保存されています。(月曜日~日曜日) -------テーブル1------- 日付 売上金額 2013/09/01 3000 2013/09/02 4000 2013/09/03 2000 ・ ・ ・ 2013/09/30 1000 ----------------------- --------テーブル2--------- 日付(月) 日付(日) 2013/08/26 2013/09/01 2013/09/02 2013/09/08 ・ ・ ・ 2013/09/30 2013/10/06 ------------------------- テーブル1とテーブル2の情報をもとに テーブル3にある、日付(月)と日付(日)は、テーブル2から持ってきて、 一週間の集計を行いたいと思っております。 --------------テーブル3-------------- 日付(月) 日付(日) 売上金額 2013/08/26 2013/09/01 3000 2013/09/02 2013/09/08 6000 ・ ・ ・ 2013/09/30 2013/10/06 1000 ------------------------------------ このようにするにはどのようなSQLを組めばいいのでしょうか? SQL初心者のため、難しい単語などを使わずに ご説明をしていただければと思います。 どうぞ、よろしくお願いいたします。
- ベストアンサー
- SE・インフラ・Webエンジニア
- 集計をしたい
SQLで集計をしたいです。 SQLを始めたばかりの者です。 下記、よろしくお願いします。 説明不足がありましたら、ご指摘をお願いします。 MS-SQLServer2005環境です。 下記の売上テーブルが存在します。 テーブル:UriageTBL 年月日 受注番号 商品コード 商品名 個数 単価 金額 20101001 100 300 リンゴ 1 100 100 20101001 110 400 バナナ 1 150 150 20101001 110 400 バナナ -1 150 -150 20101001 120 500 キャベツ 1 120 120 20101002 130 500 キャベツ 1 120 120 20101002 140 600 レタス 1 110 110 20101002 140 600 レタス 1 110 110 20101002 150 400 バナナ 1 150 150 ----------------------------- 商品コードに対応する商品グループ(テーブルは存在しません) 商品コード 商品グループ 300 果物 400 果物 500 野菜 600 野菜 ---------------------------- 【結果】 年月日 商品グループ 受注件数 個数合計 金額合計 2010/10/01 果物 1 1 100 2010/01/01 野菜 1 1 100 2010/10/02 果物 1 1 150 2010/10/02 野菜 2 3 340 売上テーブル(UriageTBL)を、年月日別、商品グループ別に集計し、受注件数、個数合計、金額合計を取得したいです。 また、商品コードに商品グループテーブルが存在しない為、SQL内で設定します。 ただし、受注合計金額が0円の時は集計から外します。(受注番号110は集計から外します。) (受注件数は、受注番号の件数です。) 上記の場合、どのようなSQLの組み方をすればよいのか見当もつかず悩んでおります。 どなたかご教授頂ける方がいらっしゃいましたら、よろしくお願い致します。
- ベストアンサー
- SQL Server
- SQLで集計について分からないことがあります。
SQLで集計について分からないことがあります。 まず、次のようなテーブルがあったとして 日付 店舗コード ブランドコード 金額 ---------------------------------------- 09-01 | 401101 | 01 | 10000 09-02 | 401101 | 01 | 20000 09-03 | 401101 | 01 | 30000 09-04 | 401101 | 01 | 40000 09-01 | 401101 | 02 | 10000 09-02 | 401101 | 02 | 20000 09-03 | 401101 | 02 | 30000 09-04 | 401101 | 02 | 40000 09-01 | 401101 | | 11111 09-02 | 401101 | | 22222 09-03 | 401101 | | 33333 09-04 | 401101 | | 44444 ブランドコードが'Null'の金額をブランドコードが'01'の金額に 日付をキーにして集計したいんですが、 可能でしょうか? なにか、良い方法があればお願いします。
- ベストアンサー
- Oracle
- SQLでの集計方法について
SQLでの集計方法がわからず質問をさせていただきます。 改版のたびに商品名を変える商品がたくさんあるとします。 (下記のような感じで、履歴番号が大きいほど新しい) 商品コード 履歴番号 商品名 123456 8 元祖○○ 123456 7 ○○外伝ターボ 123456 6 ○○外伝 123456 5 スーパー○○2 123456 4 スーパー○○ 123456 3 ○○3 123456 2 ○○2 123456 1 ○○ この場合に、各商品コードの履歴番号が最大(最新)の、 「商品コード」「改版履歴番号」「商品名」を取得するには どのようなSQLを作成すればいいでしょうか?
- 締切済み
- SE・インフラ・Webエンジニア
- 同一テーブル内のデータを比較条件で集計し表示するには?
商品 価格 -------------------- 白米 15000 玄米 14000 なす 5000 きゅうり 3000 上記のようなテーブルから、 価格が10000までの商品点数、また10000~20000の 商品点数を一回のSQL文で取得できるようなクエリー を作りたいのですが、アドバイス頂けましたら幸いですm(__)m
- ベストアンサー
- SQL Server
- MYSQLで月ごとの集計をおこないたい
こんばんは。MYSQLのTABLE_Aに下記の3つのフィールドがあります。 日時(DATE),商品名(VARCHAR),売上(INT) 2010/01/01,商品A,100 2010/01/30,商品B,200 2010/03/10,商品C,300 2010/03/20,商品D,400 最終的に欲しいのは、1月は1月の集計(300)、3月は3月の集計(700)など、月でまとめたいと思っています。 groupでまとめるにも日付まではいっているので、月でまとめるにはどうしたらいいのか悩んでいます。よろしくお願いします。利用MYSQLは5.5です。
- ベストアンサー
- MySQL
- SQLでグルーピングしてやや複雑な集計する方法
SQLでグルーピングしてやや複雑な集計する方法 こういうことってやりたい時あるよなーと思いつつ いい方法が思い浮かばないので質問させてください。 日付ごとにタイプなどの条件により集計して、 1行で1日分のデータを並べて出力したいと思っています。 とりあえずイメージを提示します。 テーブルイメージ -------------------------- 日付 額 タイプ 20090101 5000 1 20090101 1000 1 20090101 3000 2 20090101 2000 2 20090101 -200 4 20090101 3000 4 20090101 2000 4 20090102 1000 1 20090102 1000 2 20090102 1000 2 20090102 -100 4 20090102 4000 4 20090102 3000 4 -------------------------- 出力イメージ ----------------------------------------------------- 日付 タイプ1 タイプ2 タイプ4(正) タイプ4(負) 20090101 6000 5000 5000 -200 20090102 2000 2000 7000 -100 ----------------------------------------------------- 複問い合わせを駆使すればできるような気もするのですが、 日付で集計しなければならないところが難しく感じています。 合計が0(というか対象データが無い場合)の部分は空白でもかまいません。 データベースはOracleですがOracleだけでしか使えない特殊な機能ではなく 普通のSQLの組み合わせで解決したいと思っています。 (でもOracle固有の機能で解決できるのならそれも教えていただきたいです) 基本的に1発のSQLで表形式で帰ってくるSQLの書き方をお願いします。 できれば、SQLそのものを記述していただきたいです。 何回かSQLを発行してあとでエクセルで…とか、他のPG言語でなんとかする という方法は今回はいりません。 よろしくお願いします。
- ベストアンサー
- Oracle
- 集計のSQLについて
皆さんの知恵をお借りしたいと思っています。 どなたか、良い案がある方お願いいたします。 以下のテーブルがあります。 (売上テーブル) 品名 金額 購入者 ---------------------------- 鉛筆 20 Aさん 鉛筆 40 Bさん 鉛筆 30 Bさん 鉛筆 30 鉛筆 10 上のテーブルで、品名・購入者を集計キーとして、 金額を集計したい場合、 SELECT 品名,購入者,SUM(金額) FROM 売上テーブル GROUP BY 品名,購入者 というSQL文で, 品名 金額 購入者 ---------------------------- 鉛筆 20 Aさん 鉛筆 70 Bさん 鉛筆 40 という結果が得られると思いますが・・・、 これを、 品名 金額 購入者 ---------------------------- 鉛筆 20 Aさん 鉛筆 70 Bさん 鉛筆 30 鉛筆 10 という結果になるようなSQL文を作りたいのです。 購入者が入っているものについては、品名・購入者で集計して、 購入者が空欄のものは集計しないようにしたいと思っています。 UNIONを使えばできるとは思うのですが、 それ以外の方法で、1回のSQL文でできる方法があれば知りたいと思っています。 よろしくお願いします。
- ベストアンサー
- Oracle
- Excelで月ごとの集計を間に入れたい
1行目に日付があり、別シートの入力項目で入れられた年月の1日を開始日として 横に連続して日付が進んでいるシートがあります やりたいことは、月ごとの集計なのですが 集計の列を各月の最終日の直後に入れないといけない事です まとめて最後に持ってくるとか、別シートに集計表とするなら ピボットテーブルも使えそうですが、今回の要望では使えません しかも 何月を入れられ羽化わからないため、列が可変長となります つまり 2月は28日か29日、その他の月は30日か31日で、 一番目指したいスタイルとしては・・・ 2月28日 2月29日 集計 3月1日 3月2日 ~~ 3月31日 集計 4月1日 ~~ ですが、日付が存在しなければスグに集計を持ってくると言うのは 不可能と考えますので、31列固定で考えて 2月28日 2月29日 空欄 空欄 集計 3月1日 3月2日 ~~ 3月31日 集計 4月1日 ~ でも構いません それにしても、計算の結果、月が変われば空欄にして、集計の直後から改めて翌月から はじめるということは、どのような操作で可能となるでしょうか? どだい、集計を間に挟む事自体無理がありますでしょうか?
- ベストアンサー
- Excel(エクセル)
- 売上日より小さく且つ最大日の抽出
以前こちらで商品の価格変更に対応するため履歴テーブルの作成を教えていただきました。作成したテーブルは以下のようなものです。 商品番号,価格,開始日,終了日 00000001,120,2006/01/01,9999/09/09 00000002,200,2006/01/01,2006/12/31 00000002,210,2007/01/01,9999/09/09 00000003,150,2006/01/01,2006/09/30 00000003,180,2006/10/01,9999/09/09 売上テーブルと履歴テーブルを使い売上金額を集計しています。 商品番号が複数存在する場合は売上日が開始日と終了日の間になる価格を取ってくるようにしています。 しかし現在、履歴テーブルの終了日は手入力しているため、この手間を省くため以下のようなテーブルへの変更を検討しています。 商品番号,価格,適用日 00000001,120,2006/01/01 00000002,200,2006/01/01 00000002,210,2007/01/01 00000003,150,2006/01/01 00000003,180,2006/10/01 このような履歴テーブルにした場合、商品番号が複数存在するときは売上日より小さく且つ最大日のものを抽出するようにしなければならないと思うのですが、うまくいかず売上日より小さい日付ものか最大日付のもののどちらかしか抽出できません。 どのようにしたらいいのでしょうか。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
お礼
回答感謝です。 年月を出して、group byで絞り込めば良いんですね。 ありがとうございました。