首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用WHERE筛选CASE语句

使用WHERE筛选CASE语句
EN

Stack Overflow用户
提问于 2014-03-25 16:03:53
回答 3查看 3.1K关注 0票数 0

我想在CASE语句中列出的变量上筛选结果集。

代码语言:javascript
运行
复制
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的情况。

EN

Stack Overflow用户

发布于 2014-03-25 16:06:46

您可以在SUM子句中使用CASE语句的WHERE结果,如下所示:

代码语言:javascript
运行
复制
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) < 3
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22640037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档