mysql - SQL 多重选择和分组依据

标签 mysql sql select conditional-statements

这是我的数据:

enter image description here

我想查找满足以下条件的每个日期的唯一 SessionId 的数量: 当一个sessionid中“/topic”的数量=1时,同一个sessionid中“/detail”的数量也等于1。所以对于我的情况,sessionid=1(412)是唯一满足要求的sessionid。

这是我使用的代码:(表名称是we)

SELECT count( Distinct sessionid) 
from
    ( Select sessionid, count(search like "/topic%") as TN and Count(search like "/detail%") as DN from we GROUP BY date order by date) as my_table 
WHERE TN ==1 and DN=1

很抱歉代码困惑,但它应该打印出日期 412 和日期 413 的 [1,0]。但它不起作用。有什么建议吗?非常感谢!

最佳答案

SELECT DATE, 
       count(Distinct sessionid) 
FROM (Select sessionid, 
             DATE,
             SUM(CASE WHEN search like '/topic%' THEN 1 ELSE 0 END) as TN, 
             SUM(CASE WHEN search like '/detail%' THEN 1 ELSE 0 END) as DN 
    from we 
    GROUP BY sessionid, DATE
    ) as my_table 
WHERE TN = 1 AND DN = 1
GROUP BY DATE

关于mysql - SQL 多重选择和分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577287/

相关文章:

mysql - 检查表中不存在集合中的哪些 ID

sql-server - sql server 选择不同的 ID

database - PostgreSQL 插入的行与选择不同

mysql - mysql 中的自定义排序

SQLite 插入 - 重复键更新 (UPSERT)

mysql - 嵌套 promise 时调用退出后无法将查询排入队列

mysql - 即将到来的生日年错误 (SQL)

sql - 如果不存在则插入,如果存在则删除

sql - 如何删除表中没有FK关系的所有行

php - 无法从表中选择,但我可以插入和创建?