投稿した例が進行中のバージョンである場合-曜日を取得することを心配する前に、クエリの基本を正しく確認する必要があります
e.projectid と u.userid を選択していますが、クエリに e または u という名前のテーブルがありません。これらを e および u としてエイリアスしたいようです。
クエリの where 句は、存在しないテーブル e も探しています
その場合は変更する必要があります
from table1
join table2
on table1.a= table2.a
に
from table1 e -- select from table1 using alias e
join table2 u -- join table2 using alias u
on ( e.a = u.a ) -- joining on column a from table1 (e) = a from table2 (u)
on セクションの a を結合したい列名に置き換えたら、最後の列 ", ??" を削除した後に実行される可能性があります。選択から - おそらくこれらの線に沿った何か
select
count (e.projectid) PROJECTS,
count (u.userid) USERS
from table1 e
join table2 u
on ( e.a = u.a )
where e.FILTERING_COLUMN = '1'
and e.eventdatetime >= sysdate-30
sysdate はサーバーの現在の時刻であるため (ローカリゼーションとセッションの設定によって異なります)、sysdate-30 よりも大きい値を使用することができます。テーブルが適切にインデックス化されている場合、クエリ オプティマイザーに簡単な時間を与えることができます。
グループ化の基本的なルールは、列を選択するには、それによってグループ化するか、COUNT() などの集計関数を使用する必要があるということです。
したがって、おそらく次のようなものが必要になるでしょう
select
count (e.projectid) PROJECTS,
count (u.userid) USERS,
to_char(e.eventdatetime,'MM') MONTH
from table1 e
join table2 u
on ( e.a = u.a )
where e.FILTERING_COLUMN = '1'
and e.eventdatetime >= sysdate-30
group by e.eventdatetime
これはこれを行うための最適な方法ではありませんが、問題に関連するスキーマを投稿すると簡単になります。