對於SQL服務器,這應該工作:
SELECT coalesce(v.y, s.y) y, coalesce(v.m, s.m) m, coalesce(v.d, s.d) d,
100.0 * isnull(s.num, 0)/(isnull(s.num, 0) + isnull(v.num, 0)) conversion
FROM
(
SELECT datepart(YEAR, [date]) y, datepart(m, [date]) m,datepart(d, [date]) d,
count(action) num
FROM actions
WHERE action = 'visit'
GROUP BY datepart(YEAR, [date]), datepart(m, [date]), datepart(d, [date])
) v
FULL OUTER JOIN
(
SELECT datepart(YEAR, [date]) y, datepart(m, [date]) m,datepart(d, [date]) d,
count(action) num
FROM actions
WHERE action = 'signup'
GROUP BY datepart(YEAR, [date]), datepart(m, [date]), datepart(d, [date])
) s
ON v.y = s.y AND v.m = s.m AND v.d = s.d
我離開字符串連接,四捨五入和一般魯棒性的練習。
你只是想在SELECT語句中看到或要在表存儲該是這樣的:在SQL Server 2008及更高版本,它可以與鑄造到
date
類型的更清潔,更高效的操作來代替 –