• ベストアンサー

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
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

SELECT 日時, 商品名, SUM(売上) FROM TABLE_A GROUP BY DATE_FORMAT(日時, '%Y%m')

mellow91
質問者

お礼

ご回答ありがとうございます!感謝っす!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

遅くても良ければ SELECT MONTH(日時) AS 月,SUM(売上) AS 売上 FROM TABLE_A GROUP BY 月 とすれば月で集計されるでしょう もちろん月で集計するのが目的のテーブルであれば、最初から テーブルに集計単位になる月(正確には年月?)を個別フィールドとして 埋め込んでおき、月と売上を組みにしたインデックスを貼っておくことです

mellow91
質問者

お礼

ご回答ありがとうございます!勉強になります!感謝です!

関連するQ&A

  • アクセスで月ごとの集計

    いつも大変お世話になっております。 似たような質問が他にもあるかもしれませんが、見当たりませんでしたので、新しく質問させてください。 アクセスで、集計をしたいと思っています。 あるフィールドには、日付/時刻型が設定されていて、そこには日付の情報が入っています。 その他のフィールドに、金額が入っています。 日付が入っているフィールドの日付をもとに、「月ごと」に金額を集計したいのですが、クエリの集計でどのように指定すればいいのでしょうか? 他の機能で見た、「グループ間隔の設定」というような感じです。 また、さらに分かれば教えてほしいのですが、その日付のフィールドには空白もあります。 空白は無視をして、日付が入っているところだけ集計をしたい場合はどうすればいいでしょうか? 大至急!よろしくお願いします。m(_ _)m

  • 月別、販売員別の集計がわかりません。mySqlです

    店舗の毎日の売り上げを、日付・販売員名・売り上げ額のテーブルで集計しています。 【テーブル例1】 date, name, price 2014-05-01,吉田,2400 2014-05-01,佐藤,1500 2014-05-02,佐藤,3000 ...(中略)... 2014-06-18,佐藤,3000 2014-06-30,吉田,1000 これを月別、販売員別の金額で次のように集計したいのですが、 【例2】 各販売員がその月に売り上げた金額の合計 2014-5 吉田 205000 2014-5 佐藤 120000 2014-6 吉田 75000 2014-6 佐藤 90000 SELECT文における"GROUP BY"の条件を、"GROUP BY date AND name"のように"AND"でつなげてもうまくいきませんでした。 もちろん、条件をひとつだけにした"GROUP BY date" および "GROUP BY name"では、それぞれ日付別の集計、あるいは販売員名別の集計が出ます。 【質問】 1.GROUP BYは複数の条件をつけることができないのでしょうか? 2.どのようにすれば【例2】の集計ができますか?

    • ベストアンサー
    • MySQL
  • 月に対応するフィールドを抽出するSQL

    検索がまずいのか、過去ログに見当たりませんでした。 よろしくお願いします。 以下を実行して、テーブルを作成したとします。 CREATE TABLE table_name (date1 date ,data varchar(20)) データを入力して、 date1 data field1 2004-03-01 AAA field2 2004-03-02 BBB field3 2004-03-03 CCC field4 2004-04-01 DDD これから、3月に対応するフィールドだけを抽出する クエリー文を教えてください。 SELECT * FROM table_name WHERE date1( 以下の文 ) 実際のデータベースでは、月締め計算をしたいのです。 日付は、上記と同じ date 型です。 PHP+MySQLで動かしています。 POSTで実際に受け渡される値は、「2004-3」です。

  • MySQLでのテーブル作成について

    はじめまして。私は学校でDBの勉強をするのにOracle10gを使っているのですが家で練習するにあたりOracleを入れれないのでMySQL5.0をいれてみましたが若干勝手が違いいろいろ調べながらやってみたもののテーブル作成の際の制約の決め方などがうまく作れません。特に外部キーで悩んでいるのですがどうすればよいか教えていただきたいのです。 mysql>CREATE TABLE MEIBO( SEITO_NBR INT(5) PRIMARY KEY NOT NULL, SEITO_MEI VARCHAR(80) NOT NULL, SEIBETSU_KBN CHAR(1), TANJO_YMD DATE, GAKKA_CD VARCHAR(2), BIKOU_TXT VARCHAR(1000), INSERT_DATE DATE, UPDATE_DATE ); mysql>CREATE TABLE GAKKA( GAKKA_CD VARCHAR(2) PRIMARY KEY NOT NULL, GAKKA_MEI VARCHAR(80) NOT NULL ); ちなみに下の学科表は作成できました。が上の名簿がうまくできません。長くなりましたがよろしくお願いします。

  • 集計結果を検索対象にするには?

    MySQL 4.0.16です。 create temporary table TABLE_B as select FIELD_1,sum(FIELD_2) from TABLE_A; というように、TABLE_Aから集計した結果をTABLE_B作成と同時に挿入しています。 create table~as selectでは、selectで指定したフィールド名が継承されるとの事で、新規作成&挿入されたTABLE_Bのフィールド名は"FIELD_1","sum(FIELD_2)"というフィールド名が自動で付与されます。(desc temp でフィールド名は確認しました) 続くSQL文でTABLE_Bの"sum(FIELD_2)"が条件検索の対象になるのですが、where sum(FIELD_2)条件 ではgroup by の使い方が間違っている、というエラーになってしまいます。 どのように解決したらよいか悩んでいます。アドバイスを頂ければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • MySQLの日付データについて

    PHPでMySQLから日付データを表示しようとしているのですが、日付フィールドの値をvarcharにしてしまいました。 このような状況下での質問なのですが、varcharフィールドに2006年1月1日と2006年2月1日と2006年11月1日がある場合、PHPで日付データを表示するとこのような順番で表示されてしまいます。 2006年1月1日 2006年11月1日 2006年2月1日 下記のようなカレンダー順の表示にするにはどのような方法があるでしょうか? 2006年1月1日 2006年2月1日 2006年11月1日 また、下記の質問と回答を拝見したのですが、日付データはタイムスタンプで処理するのが一般的なのでしょうか? http://oshiete1.goo.ne.jp/qa1396724.html その場合、フィールドタイプをDATEにしておいて、PHPからMySQLに書き込む際はどのような形式が正しいのでしょうか? 2006/1/1のまま書き込んでも自動的にタイムスタンプに変換してくれるのでしょうか。 最後に私のような初心者がMySQLを勉強する際にお勧めの書籍やウェブサイトなどありましたら是非教えて頂けると幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysql+php 日付別料金データで最安値の取得

    お世話になっております。 phpで、mysqlに日付毎料金の月の最安値を求めたいのですが、方法が思いつきません。 mysql  データベース名:ryoukin フィールド名:from(varchar(8)) 20061001 フィールド名:to(varchar(8)) 20061220 フィールド名:tariff(varchar(8)) 600 ・サンプルデータです 20061001 20061218 600 20061219 20070115 590 20070116 20070331 570 欲しい答え 10月600 11月600 12月590 1月570 2月570 3月570 バージョンは社外の方に設定してもらっているのでよく分からないのですが、php2.??だったかと思います。 もし、カテゴリーがmysqlならば、再度投稿し直しますのでご指示下さい。 よろしくお願いします。 例2) A B C 20061001 20070115 300 20070116 20070117 400 20070118 20070331 570 欲しい答え 10月300 11月300 12月300 1月400 2月570 3月570 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlのクエリの質問です。

    最近phpmyadminを使い始めたmysqlの初心者です。 テーブルAにはフィールドC(int(10))とフィールドD(varchar(32))があります。 テーブルBにはフィールドE(int(10))とフィールドF(text)があります。 フィールドCとフィールドEは同じキーです。(申し訳ありません。正しい表現方法がわかりません。) テーブルAのレコードの中でフィールドDの値がXYZのものであるときのみ、フィールドCをフィールドEに入れたレコードをテーブルBに作りたいと思っています。この場合、どのようなクエリを書いたらよろしいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • EXCEL集計の方法で。。

    こんにちは。 EXCELの集計方法で質問なのですが、例えば、 A店、B店、C店、における1か月分の商品別売り上げ表があるとします(下記のような表) 店 日  物   個数 A店 10/1 トマト  2個 B店 10/1 キャベツ 1個 A店 10/1 キャベツ 1個 C店 10/2 トマト  3個 B店 10/4 キャベツ 4個 A店 10/4 きゅうり 1個 A店 10/4 キャベツ 2個 これを集計し、店別でしかも商品別の売り上げ個数を求めるのはどのようにしたら良いでしょうか?? 集計でグループ基準を店、集計方法を合計、集計するフィールドを個数にしてすると、下記のような問題が生じてしまします。 (1)同じ売り上げ日の同じ店の売り上げはTOTALされる。 (2)集計部分(太字の部分)に商品名が出てこない できれば、アウトライン2を使用して、集計結果を以下のようにしたいのです。 A店  トマト  2個 B店  キャベツ 5個 A店  キャベツ 3個 C店  トマト  3個 A店  きゅうり 1個    どなたか、お分かりになるかたいらっしゃいますでしょうか??長々と書いてしまいましたが、どうぞ よろしくお願い致します。

  • Mysqlのupdate文

    Mysql3.23.42+PHPで下記のようなテーブルで Field| Type ----+------------  a | int  b | varchar  c | varchar  d | timestamp  e | timestamp update文を実行すると、 例  update set b='あ',c='い',e=NULL where a='1'; dまでアッデートされてしまうのですが何ででしょう? 何か特別なことしなくてはいけないのでしょうか?