私は自分のサーバ上のアプリケーションから送信された電子メールを追跡するテーブルを持っています。特定の期間に各アプリケーションによって送信された電子メールの数を示すクエリを書きたいと思います。こちらの表は、次のとおりです。複合SQLクエリ
----------------------------------------------------------
| emailID | SentDT | ApplicationName |
----------------------------------------------------------
| 1 | 2011-08-04 14:43:31.080 | Term Form |
----------------------------------------------------------
| 2 | 2011-08-04 13:59:46.062 | Term Form |
----------------------------------------------------------
| 3 | 2011-08-03 10:38:15.015 | Request Form |
----------------------------------------------------------
| 4 | 2011-08-03 05:52:29.005 | Term Form |
----------------------------------------------------------
| 5 | 2011-08-01 19:58:31.094 | Recruiting Form |
----------------------------------------------------------
私は今日送られたメールの数、過去24時間、過去7日間、今月、先月、すべての時間を見たいのですが。
私はこれらのクエリをそれぞれ単独で実行する方法はわかっていますが、データベースへの1回のトリップでどのように実行するのかという手がかりはありません。例えば
:
--------------------------------------------------------------
| ApplicationName | Today | Last24 | Last7days | ThisMonth |
--------------------------------------------------------------
| Term Form | 2 | 5 | 10 | 19 |
--------------------------------------------------------------
| Request Form | 9 | 18 | 36 | 75 |
--------------------------------------------------------------
| Recruiting Form | 15 | 35 | 100 | 250 |
--------------------------------------------------------------
I回の各サブセットのためのネストされた選択を使用してみましたが、私はネストされた選択にgroup by
を使用することはできません。結果を生成しませんマイクエリ:
select COUNT(emailID), ApplicationName, (select COUNT(emailID) from emaillog where SentDT > '08/02/2011') as TwoDaysAgo
from emaillog
group by ApplicationName
order by ApplicationName
何をする必要がありますか?あなたは何を得ているのですか? – Vinay