也许你想用
count()
然后做一个
UNION ALL
.
SELECT 'LAST WEEK' `Period`,
count(created_at) `Total Invitations`,
count(completed_at) `Invitations completed`,
concat(count(completed_at) / count(created_at) * 100, '%') `% Conversion`
FROM invitations
WHERE created_at >= curdate() - INTERVAL dayofweek(curdate()) + 6 DAY
AND created_at < curdate() - INTERVAL dayofweek(curdate()) - 1 DAY
AND user_id <> 1
AND type = 'email'
UNION ALL
SELECT 'TWO WEEKS' `Period`,
count(created_at) `Total Invitations`,
count(completed_at) `Invitations completed`,
concat(count(completed_at) / count(created_at) * 100, '%') `% Conversion`
FROM invitations
WHERE created_at >= curdate() - INTERVAL dayofweek(curdate()) + 13 DAY
AND created_at < curdate() - INTERVAL dayofweek(curdate()) - 1 DAY
AND user_id <> 1
AND type = 'email';
count(completed_at)
只计算行,其中
completed_at
不为空。我想
完成时间
只有在邀请未完成时才为空。
count(created_at)
工作模拟。但我假设该列中没有空值(如果是,那么这些行将与
WHERE
条款,所以他们甚至都不是计数的候选人)。
全部联合
只需将两个结果集合并(不排除重复项,这些重复项无论如何都不在其中,至少
Period
不同)。