求人掲示板と応募者の出身地に関する分析スタイル情報を次の構造で返すクエリがあります。
アクセスするクエリは次のとおりです。
SELECT g.name AS [Source]
,SUM(CASE WHEN v.cost = 0 THEN 1 ELSE 0 END) AS [Organic Clicks]
,SUM(CASE WHEN v.cost <> 0 THEN 1 ELSE 0 END) AS [Paid Clicks]
,COUNT(v.id) AS [Total Clicks]
,SUM(CASE WHEN a.applicant = 1 AND v.cost = 0 THEN 1 ELSE 0 END) AS [Organic Applicants]
,SUM(CASE WHEN a.applicant = 1 AND v.cost <> 0 THEN 1 ELSE 0 END) AS [Paid Applicants]
,SUM(CASE WHEN a.applicant = 1 THEN 1 ELSE 0 END) AS [Total Applicants]
,SUM(v.cost/100.0) AS [Spend]
FROM a_views v
LEFT OUTER JOIN a_views a
ON v.viewerid = a.viewerid
AND v.sessionsourceid = a.sessionsourceid
AND a.applicant = 1
JOIN a_sources s
ON v.sourceid = s.id
JOIN a_sourcegroups g ON s.fk_sourcegroup = g.id
--JOIN jobs j ON v.jobid = j.anal_id AND j.featured = 1
WHERE v.hostName = @jobboard
AND v.viewed_at >= @start AND v.viewed_at <= @end
GROUP BY g.name
唯一の問題は、LEFT OUTER JOIN a_views
ブロック内に複数のレコードが返される可能性があることです。私がする必要があるのは、合計で1回だけレコードを追跡することですが、Click
合計でレコードが見つかるたびに追跡しApplicant
ます。
私はこの質問でこれが起こっているのと同様の質問を見つけましたが、回答者は実際には多くの情報を提供しませんでした。
必要なものを再開するには、結合の右側にあるレコードの各インスタンスですが、左側にあるレコードのインスタンスは1つだけです。