首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >前提条件下的MySQL计数?

前提条件下的MySQL计数?
EN

Stack Overflow用户
提问于 2018-09-17 18:59:31
回答 2查看 73关注 0票数 0

考虑下面的方案

代码语言:javascript
复制
id   user   tag    created
1    foo    tag1   2018-09-01
2    foo    tag2   2018-09-01
3    bar    tag1   2018-09-02
4    bar    tag2   2018-09-03
5    kkk    tag2   2018-09-05
6    qqq    tag1   2018-09-12

如何找到唯一用户的数量,在'tag1‘行之后,该用户的未来行后面跟着一个'tag2’?

根据上面的查询,答案是2 (foo,bar)

EN

回答 2

Stack Overflow用户

发布于 2018-09-17 19:01:21

您可以使用聚合来获取用户列表:

代码语言:javascript
复制
select user
from t
group by user
having min(case when tag = 'tag1' then created end) < max(case when tag = 'tag2' then created end);

要获取此类用户的数量,请使用子查询:

代码语言:javascript
复制
select count(*)
from (select user
      from t
      group by user
      having min(case when tag = 'tag1' then created end) < max(case when tag = 'tag2' then created end)
     ) u;
票数 1
EN

Stack Overflow用户

发布于 2018-09-17 19:11:55

您可以使用子查询来查找以下行:

代码语言:javascript
复制
SELECT *
FROM yourdata AS t
WHERE tag = 'tag1'
AND EXISTS (
    SELECT 1
    FROM yourdata AS x
    WHERE x.user = t.user
    AND x.tag = 'tag2'
    AND (x.created > t.created OR x.id > t.id)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52366225

复制
相关文章

相似问题

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