• ベストアンサー

日ごとの集計

このようなデータがあって +--------------------+ |テーブル名 test_tbl | +--------------------+ | reg_date | +--------------------+ | 2005/12/1| +--------------------+ | 2005/12/2| +--------------------+ | 2005/12/2| +--------------------+ | 2005/12/4| +--------------------+ | 2005/12/5| +--------------------+ それを下記のように出力したいです(正しくは月ごと) ┌────┬───┐ │date │count │ ├────┼───┤ │12月1日 │1 │ ├────┼───┤ │12月2日 │2 │ ├────┼───┤ │12月3日 │0 │ ├────┼───┤ │12月4日 │1 │ ├────┼───┤ │12月5日 │1 │ ├────┼───┤ │12月6日 │0 │ └────┴───┘ 1日から31日までどのように表示させたらいいでしょうか? よろしくお願いします。

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

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

こんな感じでは? SELECT reg_date, Sum(count) FROM test_tbl GROUP BY reg_date

chikuwa_chan
質問者

補足

ご回答ありがとうございます。 ただ、コレだとカウントが0件の日(reg_dateに登録されていない日)は表示されないので、 できれば12月1日~31日をズラッと表示したいのです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

>できれば12月1日~31日をズラッと表示したい 12月1日~31日の日付データを格納した表を作り、 LEFT JOINして、ナル値なら0を返すようにすれば 希望通りにできると思います。

chikuwa_chan
質問者

お礼

ご回答ありがとうございました。 やはり日付データを格納したテーブルを別途用意する必要があるんですね。。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 集計関数の合計について

    お世話になります。 SQLSever2005を使用しています。 Count(*)で月毎のデータ件数を集計し、またその結果を出力するSQLを考えております。 SELECT  (SELECT Count(*) FROM TBL_TEST T1 WHERE T1.T_DATE>='2005/01/01' AND T1.T_DATE=<'2005/01/31') AS CNT_1,  (SELECT Count(*) FROM TBL_TEST T2 WHERE T2.T_DATE>='2005/02/01' AND T2.T_DATE=<'2005/02/31') AS CNT_2,   (SELECT Count(*) FROM TBL_TEST T3 WHERE T3.T_DATE>='2005/03/01' AND T3.T_DATE=<'2005/03/31') AS CNT_3,   (CNT_1+CNT_2+CNT_3) AS TOTAL_CNT ・・・・・・・・・・・・ (★)  FROM TBL_TEST T  WHERE ・・・・・・・・・ 結果(★)のところで『CNT_1は無効です』というエラーになってしまいます。 ちなみにAccessではエラーにならずに結果を出力していました。 上記のSQL文はどのように修正すればよろしいでしょうか?

  • 日付毎の集計方法

    下記のようなテーブル構成で、過去一週間の毎日について、登録した人の数を知りたいです。 ■テーブル名 my_table システムに登録すると,IDが付与され,登録した日付が記録されます。 ---------------------------------------- id(intger) | reg_date(登録した日付,timestamp) ---------------------------------------- 以下のようなSQLを考えたのですが、timestampが「2005-12-01 00:00:00+09」という細かい日付になっているので、これでは「1日」毎の集計にはなりません。 この場合、どう表現すればよいでしょうか? SELECT sum(reg_date) from my_table where ('now' - reg_date < '7days') GROUP BY reg_date order by reg_date

  • postgresql 合計値 PHP

    失礼します現在テーブルからあるキーのフィールドの合計値を出していきたいのですがうまくいきません 例 テーブル名(test_tbl) user | count ----------------- aaaa | 6 bbbb | 5 bbbb | 6 aaaa | 4 cccc | 9 とあった場合 aaaa | 10 bbbb | 11 のように出力がしたく、SQLを作成しました。countが文字列で格納されているのでto_numberを使用しました $sql = "SELECT user, SUM(to_number(count)) FROM test_tbl GROUP BY user HAVING SUM(to_number(count)) >= 10"; しかしエラーが出てしまいます。どの部分が間違っているのでしょうか? 宜しくお願い致します。

  • 重複データの集計方法を教えてください。

    テーブル名:テスト コード SEQ 0001  1 0001  2 0001  3 0002  1 0002  2 0002  3 0003  1 0003  2 0003  3 0003  4 0003  5 0003  6 0003  7 0003  8 0004  1 0004  2 0005  1 0005  2 0005  3 0005  4 0005  5 0005  6 0005  7 0005  8 0006  1 0006  2 0007  1 0007  2 こういったデータのテーブルがあります。 そこで、「コード」の重複件数が6件以下の データを集計したいのです。 これで、重複したコードの件数がでると思うのですが、 SELECT COUNT(コード) FROM テスト GROUP BY コード こういうイメージです。 3 3 8 2 8 2 2 6より多いデータは、6にして、それ以外のデータはそのままの値にしたいのです。 CASE WHEN aa > 6 THEN '6' ELSE aa END 上で書いたSELECTの結果を上記のCASEで使いたいのですが、 どのように記述すればよいのでしょうか? 下記のようにしてもうまくいきませんでした。 SELECT CASE WHEN aa > 6 THEN '6' ELSE aa END FROM (SELECT COUNT(コード) FROM テスト GROUP BY コード) as aa 最終的には、 3 3 6 2 6 2 2 となったものの合計を出したいです。 24がでればいいです。 よろしくお願いします。

  • 複数のフィールドからデータをまとめるには?

    mysql5.0.18です 日単位に買い物リストを作っています テーブル名「kaimono」 フィールドは下記の通り 「date」 「data1」 「data2」 「data3」 データはこんな感じです 2月1日 タバコ 書籍  ラーメン 2月2日 本   ジュース 2月3日 タバコ ラーメン さて、これを 2月1日 タバコ 2月1日 書籍 2月1日 ラーメン 2月2日 本 2月2日 ジュース 2月3日 タバコ 2月3日 ラーメン と表示させたいのですが、可能でしょうか? 余分なフィードを表示しても問題ありません ようするに、data1,2,3をばらけて表示させたいのです よろしくお願いします

    • ベストアンサー
    • MySQL
  • 割合(パーセント)を求めるには?

    COUNTによる集計と同時に、パーセンテージを求めたいのですが、どのようにSQLを書けばよいのでしょうか?(MySQL4.1) たとえば、 テーブル名:test、レコード数:100件、カラム数: 2 date product 2014-05-01 メガネ 2014-05-01 鉛筆 2014-05-02 メガネ 2014-05-03 メガネ 2014-05-05 鉛筆 ・・・ ・・ ・ 2014-06-30 鉛筆 ・ ・ という2014年5月1日~6月30日のデータを、 select DATE_FORMAT(date, '%Y-%m'), product, count(product) from test group by product, DATE_FORMAT(date, '%Y-%m'); とすると、以下のようにグループ(月、製品)毎に個数が表示されると思います。 2014-05 メガネ 30 2014-05 鉛筆 20 2014-06 メガネ 15 2014-06 鉛筆 35 それを次のように月別の割合(パーセント)を求めるにはどのようにSQLを書けばよいのでしょうか? 2014-05 メガネ 30 60% 2014-05 鉛筆 20 40% 2014-06 メガネ 15 30% 2014-06 鉛筆 35 70% 一見、インラインビューでできそうだったのですが、月別にする段階でできなくなりました。 (月別にせずデータ全体に対してならインラインビューでパーセンテージが求められると思います。)

  • 時間集計につて

    SQLの時間集計について質問があります 一分周期であるデータの記録を取っています。 tbl テーブル名 logtime        data1 ------------------------------------ 2003/01/01 00:00:00   1 2003/01/01 00:01:00   0 省略 2003/01/01 23:56:00   0 2003/01/01 23:57:00   2 2003/01/01 23:58:00   3 データの時間あたりの合計を取得したいと思っています。 一時間分だけ取得するのであれば、 SELECT sum([data1]) FROM tbl WHERE logtime Between #1/1/2003# And #1/1/2003 0:59:0#; こんな感じで取得できますが、 時間集計したものを一日分表示したのです。 その場合は上のBetweenの時間だけかえて24回実行しなければ いけないのでしょうか? 一回で行えないのでしょうか? よろしくお願いします。 環境 WIN2000 ACCESS2000

  • 2つのテーブルのカウント結果を1行で取得

    以下のようなデータ件数のテーブルが、別々のDBにあります。 SELECT COUNT(*) FROM AA.TBL01 ------ TBL01 ------ 10 SELECT COUNT(*) FROM BB.TBL02 ------ TBL02 ------ 5 それぞれのテーブルのカウント結果を、1行で取得する ことは可能でしょうか? <取得したい結果> ---------------- TBL01 TBL02 ---------------- 10 5 よろしくお願いします。 (SQL Server2005 Standard)

  • PHPとSQLServerにて

    おはようございます。 質問させてください。 今PHPでSQLServerのデータを抽出してWEBで表示するアプリを作成しています。 SQLServerに格納されている本番テーブル(honban_tbl)はかなりのレコードが 格納されていて、テストテーブル(test_tbl)には本番テーブルの 約50分の1の大きさにしてあります。 参照先をtest_tblにすると問題なくデータを表示するのですが、 honban_tblにするとかならずエラーになります。 -------エラー内容---------- MS SQL: Query failed in d:\test\・・・ -------------------------- この原因は (1)honban_tblが大きすぎる (2)honban_tbl内のデータに壊れているものがある (3)スクリプトに問題がある (4)処理時間に問題がある 上記の理由がかんがえられるのですが、 それ以外にもなにかご存知の方いらっしゃいましたら、 宜しくお願いいたします。m(_ _)m

    • 締切済み
    • PHP
  • 月間集計ですべての日付を抽出するには

    Oracle9iで開発をしております。 月間集計をするにあたり、SQLをどのように書けばよいのか質問させていただきたいと思います。 たとえば、COUNTテーブルというテーブルがあり 年月日 カウント数 2005/09/01 1000 2005/09/01 1000 2005/09/02 2000 2005/09/03 3000 2005/09/05 5000 2005/09/06 6000 というようにデータが入っていたとします。 現在、 SELECT 年月日, SUM(カウント数) FROM COUNTテーブル WHERE COUNT_DATE BETWEEN TO_DATE(to_char(?||'/'||?||'/01')) AND LAST_DAY(TO_DATE(to_char(?||'/'||?||'/01'))) GROUP BY 年月日 としていまして、抽出されるデータは 2005/09/01 2000 2005/09/02 2000 2005/09/03 3000 2005/09/05 5000 2005/09/06 6000 となります。 ここで、2004/09/04や2005/09/07以降2005/09/30までのテーブルには存在 しない日付も抽出したいと思っています。 どのようにすれば抽出できるのでしょうか?