我正试着统计每个公司每月的潜在客户数量。我可以通过以下查询为每个月执行此操作:
MONTH 1 LEAD COUNTS
select l.companyProfileID, count(l.id) as 'Month 1 LC'
from lead l
join companyProfile cp on cp.id = l.companyProfileID
where l.createTimestamp between cp.createTimestamp and date_sub(cp.createTimestamp, INTERVAL -1 month)
group by companyProfileID
MONTH 2 LEAD COUNTS
select l.companyProfileID, count(l.id) as 'Month 2 LC'
from lead l
join companyProfile cp on cp.id = l.companyProfileID
where l.createTimestamp between date_sub(cp.createTimestamp, INTERVAL -1 month) and date_sub(cp.createTimestamp, INTERVAL -2 month)
group by companyProfileID
但是,我不想运行12个不同的查询来获取一年的潜在客户计数,而是想生成一个包含列的表:companyprofileid、month1lc、month2lc等等。
我想这可能需要一个嵌入式select函数,但我仍然在学习sql。我怎样才能做到这一点?
1条答案
按热度按时间bzzcjhmw1#
您可以使用“条件聚合”而不是运行多个查询。实际上,您将当前where条件移动到聚合函数中以形成
case expression
. 请注意count()
函数忽略空值另请注意,“介于”要求第一个日期早于第二个日期,例如,以下不返回行:
不过,这是可行的: