Re: [请益] 请问 MySQL 推荐书籍

楼主: angle065 (Fu)   2018-08-25 20:57:57
嗨,各位三百万大大
想针对原文的SQL问题讨论解法是否正确
一张资料表储存 某高中 三年级 今年所有考试的分数,一共十五万笔资料
资料表字段包:含学号、考试时间、考试分数。
然后,每三分钟问一次,每一个学生最后一次考试的分数是多少?
因为以前工作只使用过Oracle & MSSQL,最近换到MySQL,对这个问题也很困扰
之前再MSSQL或Oracle的解法是使用row_number() over(partition by)来处理
MySQL好像没有row_number()这个解法,刚刚自己尝试后的解法会变成
Select
学号,max(时间)
From table
Group by 学号
这样可以找到每个学号最后一次考试的时间
假设考试时间不重复,再join一次自己,就可以算出最后一次的分数
但若允许时间重复,这样还是无法找到答案
想请问若再Mysql要解这种题目,有什么更好的方法吗?
※ 引述《p52189 (鼠霸)》之铭言:
: 大家好
: 因为工作需求,需要增进一些 MySQL 的能力
: 打工不算的话本人经验约一年半,使用LAMP
: 数据库只会很初级的 CRUD ,稍微复杂一点的 query 都不会
: 这里提供一个我不会写的范本:
: 一张资料表储存 某高中 三年级 今年所有考试的分数,一共十五万笔资料,资料表字段包含:学号、考试时间、考试分数。然后,每三分钟问一次,每一个学生最后一次考试的分数是多少?
: 类似这种问题通常我可以下一些关键字在 Stack Overflow上面找到类似的发问,然后修改一下得到解答
: 或者如果考试程式是我写的,干脆每次考试把最后一笔快取起来
: 但是这样显然不是根本的解决之道
: 所以我需要一本比 Head First 稍微进阶一点的书,让我能解一些稍微困难一点点的问题
: 书最好是中文
: 然后也不要太难…什么“精妙的数据库语句 ”、“MySQL 之美”之类的(这两本书名我瞎掰的)……那种书太难我看不懂囧
: 然后也不要整本全部都范例几乎没篇幅在讲思路的,例如“MySQL 即战一百招”(这也是我瞎掰的)这种书
: 理想的结构是先讲述一个情境,例如我文中举的高中生考试的例子,然后先示范菜鸟如何写烂 code,烂 code 发生什么问题,如何避开这些问题,从简单的 case 到困难的
: 大概就这样……不知道会不会太囉嗦……总之请板友推荐,谢谢
:
作者: drajan (EasoN)   2018-08-25 21:24:00
设一个常数k作为行数 从原始资料表select k 学号 分数 再group by 学号 max(k)即得忘记说 k:=k+1
作者: NodeWay (不由分说)   2018-08-25 21:38:00
这个case 好像用nosql来做会更适合你已经知道使用情境了 一张表存历史成绩 一张表存最新
作者: alihue (wanda wanda)   2018-08-25 21:56:00
作者: alan3100 (BOSS)   2018-08-25 22:39:00
windowfuntction 10年前就出现了,别浪费生命在刻东西Oracle/MSSQL 2008之前就支援最基本的rownumbermysql&mariadb好像在2017前后也支援, AWS-RDS今年也支援前述有windowfunction & CTE 的版本

Links booklink

Contact Us: admin [ a t ] ucptt.com