MySQL依赖于前提条件吗?

标签 mysql sql date subquery

考虑下面的方案

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”,该用户的 future 行后面跟着“tag2”?

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

最佳答案

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

select user
from t
group by user
having min(case when tag = 'tag1' then created end) < max(case when tag = 'tag2' then created end);

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

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;

关于MySQL依赖于前提条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52366225/

相关文章:

mysql - 在mysql中向字段添加mysql唯一约束

java - 使用 volley 库搜索特定的 json 字符串

MySQL通过将不同表中的单元格相乘得到结果

sql - 如何根据另一列的过滤器更新列?

PHP:foreach msqli_query 问题

php - json_decode() 函数不返回任何内容

SQL 聚合具有相同 id 的行,第二列中具有特定值

没有时区概念的 Java 日期和日历(不考虑时区)

c++ - QDate - 在两个日期之间搜索

javascript - 操作日期时出现日期问题