日ごとのカウント
毎日のカウントを取得するには (Oracle 構文):
-- Oracle
SELECT
TRUNC(CallDate) AS Dt,
COUNT(*) AS DailyCount
FROM MOPActivity
WHERE CallDate > DATE '2013-01-01' AND CallDate < '2013-02-01'
GROUP BY TRUNC(CallDate)
MySQL を使用している場合は、TRUNC(CallDate)
上記の両方のインスタンスを次のように置き換えDATE(CallDate)
ます。
-- MySQL
SELECT
DATE(CallDate) AS Dt,
COUNT(*) AS DailyCount
FROM MOPActivity
WHERE CallDate > DATE '2013-01-01' AND CallDate < '2013-02-01'
GROUP BY DATE(CallDate)
上記のクエリは、通話アクティビティがある日のみをレポートするため、たとえば、2013 年 1 月 6 日日曜日に通話がない場合、その日付の行はありません。
月平均
Oracle では、集計関数を 2 レベルまでネストすることができます。これを使用して、次のいずれかを実行することで月平均を取得できAVG
ますCOUNT
。
-- Oracle
SELECT AVG(COUNT(*)) AS MonthlyAverage,
FROM MOPActivity
WHERE CallDate > DATE '2013-01-01' AND CallDate < '2013-02-01'
GROUP BY TRUNC(CallDate)
MySQL はこれをサポートしていないため、MySQL を使用している場合は、毎日のカウント クエリをサブクエリにプッシュし、外側のクエリで平均を計算させることができます。
-- MySQL
SELECT AVG(DailyCount) AS MonthlyAverage
FROM (
SELECT
DATE(CallDate) AS Dt,
COUNT(*) AS DailyCount
FROM MOPActivity
WHERE CallDate > DATE '2013-01-01' AND CallDate < '2013-02-01'
GROUP BY DATE(CallDate)
) DayCounts