我有以下代碼:一列連接表不受WHERE子句,我的SQL
SELECT YEAR(user.reg_date) AS year,
MONTH(user.reg_date) AS month,
DATE (
CASE
WHEN DAYOFWEEK(user.reg_date) >= 2
THEN DATE_SUB(user.reg_date, INTERVAL(DAYOFWEEK(user.reg_date) - 2) DAY)
ELSE DATE_ADD(user.reg_date, INTERVAL 1 DAY)
END
) AS week_of,
count(*) AS signups,
COUNT(CASE
WHEN user.gender = 'M'
THEN user.user_id
END) AS males,
COUNT(CASE
WHEN user.gender = 'F'
THEN user.user_id
END) AS females,
(
SELECT COUNT(*)
FROM unsubscribe
INNER JOIN user ON user.token = unsubscribe.token
WHERE DATE (DATETIME) BETWEEN week_of
AND DATE_ADD(week_of, INTERVAL 6 DAY)
) AS unsubscribe
FROM user
INNER JOIN place ON user.place_id = place.place_id
WHERE user.reg_date IS NOT NULL
AND YEAR(user.reg_date) >= YEAR(CURDATE()) - 2
AND place.contained_by = '207'
GROUP BY CONCAT (
YEAR(user.reg_date),
'/',
WEEK(user.reg_date)
)
ORDER BY week_of;
我的決賽桌結果幾乎工作,但所謂退訂在連接表中的列將不受影響/不通過過濾最後的聲明,我不知道爲什麼。
編輯: 這是我得到的結果。模式是正確的,但是所有列都通過place_id EXCEPT進行過濾以取消訂閱。我需要取消訂閱,也可以通過place_id進行過濾。
|year |month |week_of |signups |males |females |unsubscribe |
|2015 |1 |2014-12-29 |5 |1 |4 |269 |
你可能會需要一個嵌套查詢。 – LSerni
什麼是「最後哪裏聲明」? –
@JNevill感謝您的編輯!對不起,這是新的! – knod