需求:统计等级排名前N名,等级相同则比较经验值(基本上不会相同,除非到等级)
如果第N名和第N+1名相同,则N+1名也输出,依此类推。
表信息:表名:players
列名:playerID 玩家ID
playerName 玩家名称
level 等级
exp 经验值
统计SQL:
### 确定结果肯定大于N的查询sql
SELECT p.`playerID`, p.`playerName`,p.`level`, p.`exp`
FROM `players` AS p, (SELECT t.`level` AS tLevel, t.`exp` AS tExp
FROM players AS t
ORDER BY t.`level` DESC,t.`exp` DESC
LIMIT N-1,1) AS t1
WHERE p.level >= t1.tLevel AND p.exp >= t1.tExp
ORDER BY p.level DESC,p.exp DESC;
### 不确定结果大小
SELECT p.`playerID`, p.`playerName`,p.`level`, p.`exp`
FROM `players` AS p,
(SELECT (CASE WHEN MIN(t2.ttLevel) IS NULL THEN 0 ELSE MIN(t2.ttLevel) END) AS tLevel
,(CASE WHEN MIN(t2.ttExp) IS NULL THEN 0 ELSE MIN(t2.ttExp) END) AS tExp
FROM (SELECT t.`level` AS ttLevel, t.`exp` AS ttExp FROM players AS t
ORDER BY t.`level` DESC,t.`exp` DESC
LIMIT N) as t2
) AS t1
WHERE p.level >= t1.tLevel AND p.exp >= t1.tExp
ORDER BY p.level DESC,p.exp DESC;
如果第N名和第N+1名相同,则N+1名也输出,依此类推。
表信息:表名:players
列名:playerID 玩家ID
playerName 玩家名称
level 等级
exp 经验值
统计SQL:
### 确定结果肯定大于N的查询sql
SELECT p.`playerID`, p.`playerName`,p.`level`, p.`exp`
FROM `players` AS p, (SELECT t.`level` AS tLevel, t.`exp` AS tExp
FROM players AS t
ORDER BY t.`level` DESC,t.`exp` DESC
LIMIT N-1,1) AS t1
WHERE p.level >= t1.tLevel AND p.exp >= t1.tExp
ORDER BY p.level DESC,p.exp DESC;
### 不确定结果大小
SELECT p.`playerID`, p.`playerName`,p.`level`, p.`exp`
FROM `players` AS p,
(SELECT (CASE WHEN MIN(t2.ttLevel) IS NULL THEN 0 ELSE MIN(t2.ttLevel) END) AS tLevel
,(CASE WHEN MIN(t2.ttExp) IS NULL THEN 0 ELSE MIN(t2.ttExp) END) AS tExp
FROM (SELECT t.`level` AS ttLevel, t.`exp` AS ttExp FROM players AS t
ORDER BY t.`level` DESC,t.`exp` DESC
LIMIT N) as t2
) AS t1
WHERE p.level >= t1.tLevel AND p.exp >= t1.tExp
ORDER BY p.level DESC,p.exp DESC;
发表评论
-
linux清除mysql占用cache
2013-11-01 10:55 2002在linux内部将cache分为2种: 1、write/rea ... -
规范、经验
2013-11-04 17:23 557尽量不用NULL列 query cach ... -
mysql模拟队列
2013-05-14 13:42 1067-- 初始化数据 DROP TABLE IF EXIST ... -
高性能mysql[第3版]--笔记
2013-05-03 23:35 06.8 6.8.1 mysql构建消息队列 se ... -
生成随机字符串
2013-04-30 10:41 0DELIMITER $$ CREATE FUNCTIO ... -
复制笔记
2013-04-27 17:48 0http://dev.mysql.com/doc/refman ... -
[整理]mysql导入导出
2013-04-24 22:40 0方案一:拷贝物理文件(innodb, innodb_file_ ... -
【整理中】mysql字符集使用
2013-04-24 22:29 0show variables like 'characte ... -
MYSQL监控内容整理
2013-04-24 13:40 0内容 硬解析,软解析,等待事件,表空间,索引,触发器,alte ... -
无限级联分类查询
2013-04-24 09:36 0DROP TABLE IF EXISTS location ... -
mysqldbcompare --使用
2013-04-07 09:39 0http://dev.mysql.com/doc/workbe ... -
MYSQL 发送数据大小计算公式
2013-03-29 16:20 860引用:http://www.realzyy.com/?p=15 ... -
#mysql 笔记#索引长度限制
2013-03-18 12:11 830http://dev.mysql.com/doc/refman ... -
mysqldump简单使用
2013-01-21 15:27 0mysqldump -B或者--databases:备份指定数 ... -
linux经常登入登出mysql重复输入密码
2013-01-16 17:51 943经常登入、登出mysql,尤其是密码重新输入比较复杂时,使用& ... -
mysql存储过程实现行转列
2012-08-30 16:24 2112把表t_rows中的数据转换 ... -
mysql 判断字符串是否是数字
2012-07-12 10:21 2924查询表table_name中col_name(字符串类型)的值 ... -
[转载]drop 大表效率问题
2012-06-15 09:32 46http://www.mysqlops.com/2011/05 ... -
monyog安装文件
2012-03-26 16:29 1234monyog安装包,绿色版 -
linux sysbench+mysql
2012-02-16 17:25 0一、sysbench安装 tar -zxvf ...
相关推荐
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。...
凡遇等差数列前n项和最值的问题,寻找临界项是解决问题的关键,寻找临界项的办法是解关于自然数的不等式组. (1)a1>0,d寻找临界项的办法是 (2)a1,d>0寻找临界项的办法是 . 例5、在等差数列{an}中,a1=-...
在比较旧版本的python中,提供一下解决办法: import pandas as pd def pct_rank_qcut(series, n): ''' series:要分箱的列 n:箱子数 ''' edages = pd.series([i/n for i in range(n)] # 转换成百分比 func ...
猴子选大王是一个典型的编程问题,一般可用链表(可以用很大的数)或者while循环(使用此办法不能用太大的数)解决。为:n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,...
解决这个问题的一个办法是,每次以一个顶点为源,重复执行Dijkstra算法n法。这样,就可以求得所有顶点对之间的最短路径。这样做所需要的计算时间为O(n^3)。另外,也可以采用的较直接的Floyd算法。
例如,在一维数组[21,46,24,99,57,77,86]中,查找数据元素99,首先从第1个元素21开始进行比较,比较结果与要查找的数据不相等,接着与第2个元素46进行比较,以此类推,当进行到与第4个元素比较时,它们相等,...
【错误代码查询】:查询VBA错误ID号对应的原因及解决办法 【VBA窗体帮助信息查询】:窗体相关的VBA帮助查询,包括事件、方法、属性、对象、集合与控件 【函数运算符符语法查询】:VBA函数以及运算符相关的帮助查询 ...
适⽤范围:第k⼤,中位数,不重复或重复的数字 基本原理及要点:因为元素范围很⼤,不能利⽤直接寻址表,所以通过多次划分,逐步确定范围,然后最后在⼀个可以接受的范围内进⾏。 可以通过多次缩⼩,双层只是⼀个例...
A、死机 B、断线 C、拥塞 D、安全 正确答案:C 第10题,10.(2.5分)拥塞可以采用增加()和降低载荷的办法解决问题。 A、资源 B、链路 C、设备 D、服务 正确答案:A 第11题,11.(2.5分)最早的负载均衡技术是通过()...
【错误代码查询】:查询VBA错误ID号对应的原因及解决办法 【VBA窗体帮助信息查询】:窗体相关的VBA帮助查询,包括事件、方法、属性、对象、集合与控件 【函数运算符符语法查询】:VBA函数以及运算符相关的帮助查询 ...
各大公司的面试题 非常详尽 涵盖范围 C C++ Linux 网络 ...额外说两句可能是废话的话:N多大学毕业生说求职难,家长求爷爷告奶奶帮着使劲,但解决问题的根本办法是提高自己的能力,有一技之长, 相信金子总是会闪光的。
取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样实现精确查询 查找及引用 查找函数的应用 怎么能方便的判断...
取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样实现精确查询 查找及引用 查找函数的应用 怎么能方便的判断...
{n,} 重复n次或更多次 {n,m} 重复n到m次 下面是一些使用重复的例子: Windows\d+匹配Windows后面跟1个或更多数字 ^\w+匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置) 字符类 要想...
解决的这个问题的办法是调整。最后还是老师帮我帮我们找到了问题的所在——for 循环的次超过了链表中结点的数量。再就是自定义函数时由于课本的概念不清楚,多写了空格键,以至函数调用不出来。又如:在设计修改学生...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...
【9】 软件技巧——提示找不到语法文件的解决办法 【10】软件技巧——设置editplus支持其它文字,如韩文———-jackywu1978 【11】软件技巧——FTP 上传的设置—————————-李应文2.11汉化版 【12】软件技巧...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
【9】 软件技巧——提示找不到语法文件的解决办法 【10】软件技巧——设置editplus支持其它文字,如韩文----------jackywu1978@LJF 【11】软件技巧——FTP 上传的设置----------------------------李应文2.11汉化版...