SQL 多选和分组依据

SQL Multiple Selects and Group Bys

这是我的数据:

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

这是我使用的代码:(table name is 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]。但它不起作用。有什么建议吗?非常感谢!

您的子查询方向正确。您的语法有点偏离(例如,使用 sum() 而不是 count())并且 group by 键不正确。但是,您似乎在寻找:

select date, count(Distinct sessionid)
from (select date, sessionid,
             sum(search like "/topic%") as TN, sum(search like "/detail%") as DN
      from we
      group by date, sessionid
     ) t
whereTN = 1 and DN = 1
group by date;
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