mysql - 获取一天内用户查看次数最多的网址

标签 mysql unix

我有一个表,它的结构是这样的

id time       userid ip              course module cmid action url                     info
 1 1441006367      2 110.142.152.217      1 user      0 update view.php?id=2&course=1 
 2 1441006397      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 3 1441061491      2 110.142.152.217      1 user      0 view   view.php?id=0&course=1     2
 4 1441061491      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 5 1441067607      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 6 1441067617      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 7 1441067646      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 8 1441067681      2 110.142.152.217      1 course    0 view   view.php?id=1              1
 9 1441067774      2 110.142.152.217      1 course    0 view   view.php?id=1              1
10 1441069218      2 110.142.152.217      1 course    0 view   view.php?id=1              1
11 1441071815      2 110.142.152.217      1 course    0 view   view.php?id=1              1
12 1441071815      2 110.142.152.217      1 course    0 login  view.php?id=1              1
13 1441080275      2 110.142.152.217      1 user      0 view   view.php?id=0&course=1     2
14 1441080275      2 110.142.152.217      1 course    0 view   view.php?id=1              1
15 1441080275      2 110.142.152.217      1 course    0 view   view.php?id=1              1
16 1441082380      2 110.142.152.217      1 course    0 view   view.php?id=1              1
17 1441082494      2 110.142.152.217      1 course    0 view   view.php?id=1              1
18 1441082498      2 110.142.152.217      1 user      0 logout view.php?id=2&course=1     2
19 1441082504      2 110.142.152.217      1 user      0 login  view.php?id=0&course=1     2
20 1441082505      2 110.142.152.217      1 user      0 login  view.php?id=0&course=1     2
21 1441082508      2 110.142.152.217      1 user      0 login  view.php?id=0&course=2     2
22 1441082508      2 110.142.152.217      1 user      0 loam   view.DhD?id=0&course=1     2

我想在每个 url 属于不同类(class)的一天中获得用户查看次数最多的 url。一个用户可以查看多个 url 但不能查看同一类(class)。 我试过这个查询

SELECT count(DISTINCT `course`),`userid`,`course`,`module`,`url`, FROM_UNIXTIME(`time`,'%Y-%m-%d') as date FROM `mdl_log` where `time`>unix_timestamp('2016-06-01 00:00:00') AND `time`<unix_timestamp('2016-06-02 00:00:00') GROUP BY `course`

当我运行它时,它限制了一个用户的相同类(class),这是正确的,但这也限制了其他用户。 例如,如果一个用户查看同一类(class) 2 次,那么它算一个(没错)但它不计入查看 1 次的用户。意味着他们没有为其他用户获得相同的类(class)。请帮助我我做错了什么..

最佳答案

因为您正在计算分组所依据的列!这是完全错误的。

你应该计算 DISTINCT USER_ID :

SELECT count(DISTINCT `userid`),`userid`,`course`,`module`,`url`, FROM_UNIXTIME(`time`,'%Y-%m-%d') as date 
FROM `mdl_log` 
where `time`>unix_timestamp('2016-06-01 00:00:00') AND 
      `time`<unix_timestamp('2016-06-02 00:00:00')
GROUP BY `course`

我不明白你为什么还要选择 userid ?它将被随机选择,因为它不是 group by 子句的一部分。

关于mysql - 获取一天内用户查看次数最多的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38870765/

相关文章:

php - 更新数据库中的字段,通过链接传递记录 ID

shell - 使用 sed 打印匹配行

php - 按数字顺序而不是字母顺序列出文件?

mysql - 选择 MySQL 查询中的 div 列无法替换为

php - 使用 PHP 从表中的列中选择名称

c - 为什么 select 会导致 cpu 系统负载高?

ruby - Twitter created_at 时间到 ruby​​ 中的 unix 时间戳

linux - 给定行分隔的文本 block ,如何返回包含特定关键字的每个 block ?

mysql - 使用得到的结果集再次查询

php - 如何在 PHP 中使用 Google Authenticator 生成唯一的二维码?