我想在CASE语句中列出的变量上筛选结果集。
SELECT u.id,
max(t.request_at) AS "Date",
sum(CASE
WHEN t.view = 1 THEN 1
ELSE 0 END) AS ONE,
sum(CASE
WHEN t.view = 2 THEN 1
ELSE 0 END) AS TWO,
sum(CASE
WHEN t.view = 3 THEN 1
ELSE 0 END) AS THREE
FROM users u
JOIN t ON u.id = t.uid
WHERE u.signup_city_id = 18
AND u.creationtime BETWEEN '2013-12-01' AND '2014-01-01'
group by 1我真的很想按照这样的思路过滤:其中一个<3
即第一栏小于3的情况。
发布于 2014-03-25 16:06:46
您可以在SUM子句中使用CASE语句的WHERE结果,如下所示:
SELECT u.id,
max(t.request_at) AS "Date",
SUM(CASE
WHEN t.view = 1 THEN 1
ELSE 0 END) AS ONE,
SUM(CASE
WHEN t.view = 2 THEN 1
ELSE 0 END) AS TWO,
SUM(CASE
WHEN t.view = 3 THEN 1
ELSE 0 END) AS THREE
FROM users u
JOIN t ON u.id = t.uid
WHERE u.signup_city_id = 18
AND u.creationtime BETWEEN '2013-12-01' AND '2014-01-01'
GROUP BY 1
HAVING SUM(CASE
WHEN t.view = 1 THEN 1
ELSE 0 END) < 3https://stackoverflow.com/questions/22640037
复制相似问题