sql - SELECT 选择都查看过页面的用户

标签 sql mysql database select

我有一个记录每个用户的页面浏览量的表:

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| view_id      | int(11)      | NO   | PRI | NULL    | auto_increment | 
| page_id      | int(11)      | YES  | MUL | NULL    |                | 
| user_id      | int(11)      | YES  | MUL | NULL    |                | 
+--------------+--------------+------+-----+---------+----------------+

对于每一对用户,我想生成一个计数,以计算他们都查看了多少页

我只是不知道该怎么做。 :) 我正在使用 mysql,以防它具有使这变得轻而易举的非标准功能。

最佳答案

select u1.user_id, u2.user_id, count(distinct u1.page_id) as NumPages
from logtable u1
  join
  logtable u2
  on u1.page_id = u2.page_id
  and u1.user_id < u2.user_id /* This avoids counting pairs twice */
group by u1.user_id, u2.user_id;

但是你应该考虑稍微过滤一下......

(上面编辑放了u1.page_id,原来只是page_id,实在是害我)

关于sql - SELECT 选择都查看过页面的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159698/

相关文章:

php - 带有固定 header 的可滚动 echo 数据库表

mysql - 没有子查询的 MySQL 中的条件左连接

使用 PostgreSQL 对多边形中的点进行 SQL 查询

sql - 如何在Oracle SQL Developer工具中运行.sql文件来导入数据库?

mysql - 查询删除重复的行,但具有不同的列?

mysql - 多重计算查询

mysql - 按列分组和排序,但不将该列包含在结果中

javascript - 我应该通过 PHP 还是 JavaScript 进行哈希处理?

java - Spring PersistanceContext、EntityManager 和使用数据库

c++ - 获取、修改二进制文件的信息?