ユーザーアクティビティの表があります。HWA、アクティビティの日付、およびgroupIDがあります。日付範囲に基づいて、ユーザーがアクティビティを行った四半期を取得します。
日付範囲:2011-08-01-2012-07-31
Q1 - Aug-Oct
Q2 - Nov-Jan
Q3 - Feb-Apr
Q4 - May-Jul
一部のHWAは、他のHWAに置き換わるものです。これらの場合、それらはリンクされていることを示すために同じgroupIDを持っています。このような場合、重複する四半期をキャンセルする必要があります。明確にするために、2つのHWAが第2四半期に使用され、それらが同じgroupIDを持っている場合、そのうちの1つについて第2四半期のみをカウントする必要があります(これは重要ではありません)。以下は、私が得た出力で現在使用しているクエリです。
SELECT act.HWA, count(act.HWA), m.Status, m.GroupID
FROM (
SELECT
a.HWA, a.Date,
CASE
WHEN MONTH(a.Date) BETWEEN 8 AND 10 THEN 'Q1'
WHEN (MONTH(a.Date) BETWEEN 11 AND 12 OR MONTH(a.Date) = 1) THEN 'Q2'
WHEN MONTH(a.Date) BETWEEN 2 AND 4 THEN 'Q3'
WHEN MONTH(a.Date) BETWEEN 5 AND 7 THEN 'Q4'
END AS quarter,
CASE
WHEN MONTH(a.Date) <= 7 THEN YEAR(a.Date) - 1
ELSE EXTRACT(YEAR_MONTH from a.Date)
END AS quarteryear,
COUNT(*) AS num_activites
FROM activity a
WHERE a.InstitutionNumber = '000000000075'
AND (a.HWA = '001372EADBC4'
OR a.HWA = '180373E241DB'
OR a.HWA = '180373E23DE7')
AND (a.Date between '2011-08-01' and '2012-07-31')
GROUP BY
quarter,
a.HWA
) act, machine m
where act.HWA = m.HWA
group by act.HWA
これはこれを返します:
HWA quarters status groupid
001372EADBC4 3 deleted 59970
180373E23DE7 2 online 59970
180373E241DB 1 deleted 59970
期待される結果は次のとおりです。
HWA四半期ステータスグループID
001372EADBC4 2 deleted 59970
180373E23DE7 2 online 59970
180373E241DB 0 deleted 59970
上記のクエリを少し変更して作成した各HWAの四半期のリストを次に示します。3つのHWAすべてに第3四半期のシェアがあり、そのうちの1つだけに第3四半期を持たせたいことがわかります。
001372EADBC4 1 deleted 59970
001372EADBC4 2 deleted 59970
001372EADBC4 3 deleted 59970
180373E23DE7 3 online 59970
180373E241DB 3 deleted 59970
180373E23DE7 4 online 59970