0

Oracle に [DATEID date, COUNT_OF_PHOTOS int] 列を持つテーブルがあります。このテーブルは基本的に、1 日にアップロードされた写真の数を表します。

1 か月あたりにアップロードされる写真の数を要約するクエリがあります。

select extract(year from dateid) as year, extract(month from dateid) as month, count(1) as Photos
from picture_table
group by extract(year from dateid), extract(month from dateid)
order by 1, 2

これは私が望むことですが、このクエリを各月の初めに実行したいと思います。たとえば、2012 年 7 月 2 日に、現在の月を除くすべてのデータを取得します。現在の年 + 月に等しい日付を持つすべてのエントリを無視する WHERE 句を追加するにはどうすればよいですか?

4

2 に答える 2

1

1 つの方法を次に示します。

where to_char(dateid, 'YYYY-MM') <> to_char(sysdate, 'YYYY-MM')
于 2012-07-18T20:33:29.347 に答える
1

で使用している可能性のあるインデックス作成戦略を保持するには、次のようにしdateidます。

select extract(year from dateid) as year, extract(month from dateid) as month, count(1) as Photos
from picture_table
WHERE (dateid < TRUNC(SYSDATE,'MM') OR dateid >= ADD_MONTHS(TRUNC(SYSDATE,'MM'),1))
group by extract(year from dateid), extract(month from dateid)
order by 1, 2
于 2012-07-18T21:08:36.007 に答える