对于包含用户网页访问行为记录的表,如何选择访问多个网页的用户.
这个表的结构是:
userId webpageId visitTime
0 123 ...
0 124 ...
1 123 ...
... ... ...
Run Code Online (Sandbox Code Playgroud)
我可以算一下:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;
Run Code Online (Sandbox Code Playgroud)
它给我的结果如下:
userId count
0 2
1 1
2 6
... ...
Run Code Online (Sandbox Code Playgroud)
如何执行查询,给出最终结果,如:
userId
0
2
...
Run Code Online (Sandbox Code Playgroud)
每个用户都访问多个DISTINCT网页
Joh*_*Woo 34
只需添加having子句
SELECT userId, COUNT(DISTINCT webpageId) AS count
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)
但如果你只是那个 ID
SELECT userId
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)
你为什么要过滤HAVING
子句而不是on WHERE
的原因是因为,WHERE
子句不能支持聚合的列.
试试这个:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId
having COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)
更多:HAVING
归档时间: |
|
查看次数: |
40375 次 |
最近记录: |