Цель: Я пытаюсь получить разницу в% между двумя столбцами, но я думаю, что проблема заключается в типе в столбце.
Ситуация: Iу меня есть два столбца, я должен сосчитать NON
NULL
случаев, чтобы узнать, сколько раз что-то происходит в каждом месяце.И я хочу получить разницу в% между этими двумя столбцами.
Запрос:
SELECT *
,subquery3.[Email Logins Week2]/subquery3.[Email Logins Week1]
FROM (
SELECT
FORMAT(tbl3.Creation_Date, 'yyyyMM') AS [Date Subscribed]
,CAST(COUNT(CASE WHEN t1.Emails IS NOT NULL THEN 1 ELSE NULL END) AS int) AS [Email Logins Week1]
,CAST(COUNT(CASE WHEN t2.Emails IS NOT NULL THEN 1 ELSE NULL END) AS int) AS [Email Logins Week2]
FROM #tbl1 t1
LEFT JOIN #tbl2 t2
ON t1.Emails=t2.Emails
INNER JOIN #tbl3 t3
ON t1.Emails=t3.email
GROUP BY FORMAT(t3.Creation_Date, 'yyyyMM')
) subquery3
Это дает мне что-то вроде этого:
+-----------------+--------------------+--------------------+------------------+
| Date Subscribed | Email Logins Week1 | Email Logins Week2 | (No column name) |
+-----------------+--------------------+--------------------+------------------+
| 201801 | 6800 | 2000 | 0 |
| 201802 | 9000 | 3000 | 0 |
| 201803 | 7000 | 2500 | 0 |
| 201804 | 7200 | 2400 | 0 |
+-----------------+--------------------+--------------------+------------------+
Вместо:
+-----------------+--------------------+--------------------+------------------+
| Date Subscribed | Email Logins Week1 | Email Logins Week2 | (No column name) |
+-----------------+--------------------+--------------------+------------------+
| 201801 | 6800 | 2000 | 0.294117647 |
| 201802 | 9000 | 3000 | 0.333333333 |
| 201803 | 7000 | 2500 | 0.357142857 |
| 201804 | 7200 | 2400 | 0.333333333 |
+-----------------+--------------------+--------------------+------------------+
Бонус: Есть ли способ получить разницу в% в моем подзапросе, чтобы я не создавал подзапрос ????