Oracle SQL Developerを使用しています。 私は基本的に、列を保持する写真のテーブルを持っています。
[DATE_CREATED(日付), NUM_of_PICTURES(int)] という列があります。
で、select * を実行すると、以下のような出力が得られます。
01-May-12 12
02-May-12 15
03-May-12 09
...
...
01-Jun-12 20
...
etc.
これらの写真の合計を、日ごとではなく月ごとに集計しようとしています。
のようにしてみました。
select Month(DATE_CREATED), sum(Num_of_Pictures))
from pictures_table
group by Month(DATE_CREATED);
これはエラーを出力します。
ORA-00904: "MONTH": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 5 Column: 9
月の関数が間違っているのでしょうか?
私は、年を出力に含めたいと思っています。 一つの方法です。
select to_char(DATE_CREATED, 'YYYY-MM'), sum(Num_of_Pictures)
from pictures_table
group by to_char(DATE_CREATED, 'YYYY-MM')
order by 1
別の方法(より標準的なSQL)では
select extract(year from date_created) as yr, extract(month from date_created) as mon,
sum(Num_of_Pictures)
from pictures_table
group by extract(year from date_created), extract(month from date_created)
order by yr, mon;
order byを覚えておいてください。なぜなら、おそらくこれらを順番に並べたいと思うでしょうし、group byの後に返される行の順番は保証されていないからです。
オラクルの場合。
select EXTRACT(month from DATE_CREATED), sum(Num_of_Pictures)
from pictures_table
group by EXTRACT(month from DATE_CREATED);