[英]count(*) records grouped by date across two tables
我有兩個桌子:
emailLog表:
email sendTime sourceTag
-------------------------------------------------------
yadda@aol.com 2016-11-17 09:14:37.213 WelcomeEmail
badda@aol.com 2016-11-16 09:14:37.213 WelcomeEmail
test@aol.com 2016-11-15 09:12:33.213 WelcomeEmail
注冊表 :
email dateRegistered regSource
-------------------------------------------------------
yadda@aol.com 2016-11-17 09:14:37.213 WelcomeEmail
badda@aol.com 2016-11-16 09:14:37.213 WelcomeEmail
test@aol.com 2016-11-15 09:12:33.213 WelcomeEmail
我正在嘗試做一個組合查詢,以顯示在給定日期收到電子郵件的人的COUNT()與在給定日期注冊電子郵件的人的COUNT()
我已經做到了這一點:
SELECT
CONVERT(varchar(10), sendTime, 120) as date,
COUNT(*) as numberSent
FROM emailLog
WHERE sourceTag = 'WelcomeEmail'
AND
sendTime BETWEEN '20161110' and '20161120'
GROUP BY
CONVERT(varchar(10), sendTime, 120)
ORDER BY DATE ASC;
這給了我一個帶有特定sourceTag發送的電子郵件的列表,按日期分組:
DATE NUMBERSENT
2016-11-17 256
2016-11-18 136
2016-11-19 40
2016-11-20 118
2016-11-21 186
但是我不知道如何將那個日期+的注冊總和與該來源合並,例如:
DATE NUMBERSENT MEMBERSREGISTERED
2016-11-17 256 12
2016-11-18 136 24
2016-11-19 40 13
2016-11-20 118 2
2016-11-21 186 11
我試圖做類似...
SELECT
(SELECT count(*) from emailLog)
as emailLogResults,
(select count(*) from registrations)
as registrationResults
...
但那之后我被困住了。 任何幫助非常感謝
為了使事情簡單明了,我認為您可以創建2個臨時表。 與您已經做過的一樣,第一個將包含帶有特定sourceTag發送的電子郵件的列表,按日期分組。 第二張表將對注冊執行相同的操作。 然后,您可以內部連接2個臨時表。
您可以對這兩個表使用full join
(當其中兩個表中沒有特定日期的行時,從另一個表中獲取行),然后使用條件聚合。
SELECT
COALESCE(CONVERT(varchar(10), e.sendTime, 120),CONVERT(varchar(10), r.dateRegistered, 120)) as date,
COUNT(e.email) as numberSent,
COUNT(r.email) as membersRegistered
FROM emailLog e
FULL JOIN registrations r ON e.sendTime = r.dateRegistered
AND e.sourceTag = 'WelcomeEmail'
AND r.regSource = 'WelcomeEmail'
AND e.sendTime BETWEEN '20161110' and '20161120'
AND r.dateRegistered BETWEEN '20161110' and '20161120'
GROUP BY COALESCE(CONVERT(varchar(10), e.sendTime, 120),CONVERT(varchar(10), r.dateRegistered, 120))
ORDER BY DATE ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.