Leetcode刷题 sql算法题 178 Rank Scores
2015-11-09 20:22
495 查看
主要参考
LeetCode解题报告
自定义的变量是不断的变的,开始的时候那两个表的值是固定的0和null,
但是排序后开始按照顺序一行一行的输出,
每次输出as都是根据自定义的变量计算得出值,自定义的变量也不断更新
LeetCode解题报告
--解法一 笛卡尔连接 分组计数 排序 SELECT Scores.Score, COUNT(Ranking.Score) AS RANK FROM Scores , ( SELECT DISTINCT Score FROM Scores ) Ranking --等于是分组计数 每个分组中方的都是比自己大或相等的所有distinct元素 WHERE Scores.Score <= Ranking.Score --分组 GROUP BY Scores.Id, Scores.Score --组id排序 降序 ORDER BY Scores.Score DESC; --解法二 mysql自定义变量 -- Write your MySQL query statement below SELECT Score, Rank FROM( SELECT Score, --每一次都每一行都进行判断和计算 --2 当值为Score,返回0, 否则返回1 也就是不重复的自增 重复的不变 @curRank := @curRank + IF(@prevScore = Score, 0, 1) AS Rank, @prevScore := Score --1 初始变量值设置为0 FROM Scores s, (SELECT @curRank := 0) r, (SELECT @prevScore := NULL) p --3 降序排列 ORDER BY Score DESC ) t;as Rank就相当于是赋值给Rank,
自定义的变量是不断的变的,开始的时候那两个表的值是固定的0和null,
但是排序后开始按照顺序一行一行的输出,
每次输出as都是根据自定义的变量计算得出值,自定义的变量也不断更新
相关文章推荐
- iOS SQLite 增删改查的封装(关系型)
- Redis监控方案
- Mongoose数据库学习总结
- Oracle数据库中插入日期型数据
- spark-sql与elasticsearch整合&测试
- Redis安装与使用
- 数据库连接池,线程池,C3P0
- Hadoop Hive sql语法详解
- Trinea性能优化系列之数据库优化
- oracle和其他数据库对表名、列名的长度限制
- sqlldr 加载数据
- [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
- Win7 系统上安装SQL Server 2008一步一步图解教程
- MySQL数据库事务隔离级别(Transaction Isolation Level)
- mysql 。。。
- mysql容灾及自动化切换
- 30分钟让你了解MongoDB基本操作(转)
- 数据库事务隔离性问题
- oracle listagg函数、lag函数、lead函数 实例
- 关于oracle函数listagg的使用说明