当前位置:首页 > 编程教程 > mysql技术文章 > MySQL页面访问统计及排名情况

关于MySQL页面访问统计与排名

  • 发布时间:
  • 作者:码农之家
  • 点击:75

这篇文章主要知识点是关于MySQL、页面访问、统计及排名、MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

MySQL从入门到项目实践
  • 类型:MySQL大小:314.8 MB格式:PDF作者:聚慕课教育研发中
立即下载

MySQL页面访问统计及排名情况

MySQL页面访问统计及排名情况

统计访问页面数量,以分辨率进行排名

SELECT CONCAT(`height` , '*', `width`) AS `resolution` , COUNT(CONCAT(`height`, '*', `width`)) AS `total` 
FROM `wifi_status_page` 
GROUP BY CONCAT(`height`, '*', `width`) 
ORDER BY `total` DESC 
LIMIT 0 , 30 

最近7天页面访问量,每日统计数量,以日期为序

SELECT td AS showdate, COALESCE( totalcount, 0 ) AS totalcount 
FROM ( 
SELECT CURDATE( ) AS td 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -1 DAY ) 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -2 DAY ) 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -3 DAY ) 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -4 DAY ) 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -5 DAY ) 
UNION ALL SELECT DATE_ADD( CURDATE( ) , INTERVAL -6 DAY ) 
ORDER BY td 
)a 
LEFT JOIN ( 
SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT( id ) AS totalcount 
FROM wifi_status_page 
WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -6 DAY) AND CURDATE() 
GROUP BY add_data 
)b ON a.td = b.add_data 

最近30天页面访问量,每日统计数量,以日期为序

SELECT td AS showdate, COALESCE( totalcount, 0 ) AS totalcount 
FROM ( 
SELECT CURDATE( ) AS td 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY) 
ORDER BY td 
)a 
LEFT JOIN ( 
SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT( id ) AS totalcount 
FROM wifi_status_page 
WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE() 
GROUP BY add_data 
)b ON a.td = b.add_data 

昨天24小时分时

SELECT td AS showhour 
FROM ( 
SELECT DATE_ADD(CURDATE(), INTERVAL -1 HOUR) as td 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 HOUR) 
UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 HOUR) 
ORDER BY td 
)a 

今天过去的11个小时

SELECT td AS showhour 
FROM ( 
SELECT NOW() AS td 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -1 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -2 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -3 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -4 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -5 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -6 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -7 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -8 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -9 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -10 HOUR) 
UNION ALL SELECT DATE_ADD(NOW(), INTERVAL -11 HOUR) 
ORDER BY td 
)a 

以上所述是小编给大家分享的MySQL页面访问统计及排名情况,希望对大家有所帮助。

MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码

前言

本文主要介绍了关于MYSQL实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

表结构:

CREATE TABLE test.testsort (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
uid int(11) DEFAULT 0 COMMENT '用户id',
 
score decimal(10, 2) DEFAULT 0.00 COMMENT '分数',
 
PRIMARY KEY (id)
 
)
 
ENGINE = INNODB
 
AUTO_INCREMENT = 1
 
CHARACTER SET utf8
 
COLLATE utf8_general_ci
 
COMMENT = '测试排序'
 
ROW_FORMAT = DYNAMIC;

思路:可以先排序,再对结果进行编号;也可以先查询结果,再排序编号。

说明:

@rownum := @rownum + 1 中 := 是赋值的作用,这句话的意思是先执行@rownum + 1,然后把值赋给@rownum;

(SELECT @rownum := 0) r 这句话的意思是设置rownum字段的初始值为0,即编号从1开始。

实现排名:

方法一:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, (SELECT * FROM testsort ORDER BY score DESC) AS t;

方法二:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, testsort AS t
 
ORDER BY t.score DESC;

结果:

MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码 

查看指定用户排名:

方法一:

SELECT b.* FROM
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r,
 
(SELECT * FROM testsort ORDER BY score DESC) AS t
 
) AS b WHERE b.uid = 222;

方法二:

SELECT b.* from
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, testsort AS t
 
ORDER BY t.score DESC
 
) as b where b.uid = 222;

结果:

MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码

实现并列排名(相同分数排名相同):

SELECT
 
obj.uid,
 
obj.score,
 
CASE
 
WHEN @rowtotal = obj.score THEN
 
@rownum
 
WHEN @rowtotal := obj.score THEN
 
@rownum :=@rownum + 1
 
WHEN @rowtotal = 0 THEN
 
@rownum :=@rownum + 1
 
END AS rownum
 
FROM
 
(
 
SELECT
 
uid,
 
score
 
FROM
 
testsort
 
ORDER BY
 
score DESC
 
) AS obj,
 
(SELECT @rownum := 0 ,@rowtotal := NULL) r

查询指定用户并列排名:

SELECT total.* FROM
 
(SELECT
 
obj.uid,
 
obj.score,
 
CASE
 
WHEN @rowtotal = obj.score THEN
 
@rownum
 
WHEN @rowtotal := obj.score THEN
 
@rownum :=@rownum + 1
 
WHEN @rowtotal = 0 THEN
 
@rownum :=@rownum + 1
 
END AS rownum
 
FROM
 
(
 
SELECT
 
uid,
 
score
 
FROM
 
testsort
 
ORDER BY
 
score DESC
 
) AS obj,
 
(SELECT @rownum := 0 ,@rowtotal := NULL) r) AS total WHERE total.uid = 222;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

MySQL页面访问统计与排名 相关电子书
学习笔记
网友NO.105360

MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码

前言 本文主要介绍了关于MYSQL实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 表结构: CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT 0 COMMENT '用户id', score decimal(10, 2) DEFAULT 0.00 COMMENT '分数', PRIMARY KEY (id) ) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '测试排序' ROW_FORMAT = DYNAMIC; 思路: 可以先排序,再对结果进行编号;也可以先查询结果,再排序编号。 说明: @rownum := @rownum + 1 中 := 是赋值的作用,这句话的意思是先执行@rownum + 1,然后把值赋给@rownum; (SELECT @rownum := 0) r 这句话的意思是设置rownum字段的初始值为0,即编号从1开始。 实现排名: 方法一: SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, (SELECT * FROM tests……

网友NO.101378

mysql分组取每组前几条记录(排名) 附group by与order by的研究

--按某一字段分组取最大(小)值所在行的数据 /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表并插入数据: create table tb(name varchar(10),val int,memo varchar(20)) insert into tb values('a', 2, 'a2(a的第二个值)') insert into tb values('a', 1, 'a1--a的第一个值') insert into tb values('a', 3, 'a3:a的第三个值') insert into tb values('b', 1, 'b1--b的第一个值') insert into tb values('b', 3, 'b3:b的第三个值') insert into tb values('b', 2, 'b2b2b2b2') insert into tb values('b', 4, 'b4b4') insert into tb values('b', 5, 'b5b5b5b5b5') go --一、按name分组取val最大的值所在行的数据。 --方法1:select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name --方法2: select a.* from tb a where not exists(select 1 from tb where name = a.name and va……

网友NO.805511

Mysql排序获取排名的实例代码

代码如下所示: SELECT @i:=@i+1 rowNum,if(@total=t.s_score,@rank,@rank:=@i) rank,@total:=t.s_score,t.*from(select t1.* ,t2.s_score from student t1 LEFT JOIN score t2 on t1.s_id=t2.s_id and t2.c_id="01" ORDER BY t2.s_score desc)t,(select @i:=0,@rank:=0,@total:=null) s ;SELECT @i:=@i+1 rowNum,if(@total=t.s_score,@rank,@rank:=@rank+1) rank,@total:=t.s_score,t.*from(select t1.* ,t2.s_score from student t1 LEFT JOIN score t2 on t1.s_id=t2.s_id and t2.c_id="01" ORDER BY t2.s_score desc)t,(select @i:=0,@rank:=0,@total:=null) s ; Mysql 获取成绩排序后的名次 其实就是输出mysql的排序后的行号 RT:获取单个用户的成绩在所有用户成绩中的排名 可以分两步: 1、查出所有用户和他们的成绩排名 select id,maxScore,(@rowNum:=@rowNum+1) as rowNo from t_user, (select (@rowNum :=0) ) b order by t_user.maxScore desc 2、查出某个用户在所有用户成绩中的排名 select u.rowNo from ( select id,(@rowNum:=@rowNum+1) as rowNo from t_user, (se……

网友NO.133655

MySQL中给自定义的字段查询结果添加排名的方法

我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法。 下面是一个示例表的数据: 然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量。 如下面的代码: SET @counter=0; SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER BY Roll_ 执行该语句的结果如下: 更多关于自定义变量的内容请看 MySQL 的文档。 ……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

版权投诉 / 书籍推广 / 赞助:QQ:520161757