學習背景:
本科商科,研究生管理&信息系統(tǒng),完全沒有純粹的數(shù)分實習經(jīng)歷.
有做過輕量型的實戰(zhàn)電商數(shù)據(jù)項目(照貓畫虎),上過其他機構(gòu)的課程(主要是python),也刷過sqlzoo,hackerrank,以及牌薅ィ客網(wǎng)的sql題.
本周學習內(nèi)容為:
1. day01-06所有內(nèi)容: 這些內(nèi)容算是mysql中最基礎(chǔ)的部分.之前已經(jīng)接觸了蠻多的
2. 完成了mysql45題的練習, 大約有10-15題是和提供的答案有所出入的. 涉及到排名相關(guān)的題目,對變量的用法掌握程度不夠. 主要是一開始沒有搞懂變量賦值這一操作在語句中的執(zhí)行順序是怎么樣的.
3. 這周寫了大概 20-25題的leetcode, 低中高難度都有.?
難點還是在于多表查詢,過濾條件的特殊寫法,以及巧用union產(chǎn)生新表和enum的字段,
例子: 定義變量解題
leetcode-1285
select?log_id,?case?when?@id?=?log_id?-?1?then?@num:=@num
ELSE?@num:=@num+1?end?as?num,?@id:=?log_id?from?logs,(SELECT?@num:=0,?@id:=0)?a(SELECT?@num:=0,?@id:=0)?a
這題的思路是將 連續(xù)出現(xiàn)的數(shù)字歸為一類.?
這里采用@num這一變量對連續(xù)出現(xiàn)的數(shù)字進行標注分組,
@id初始值為0,將0和第一條記錄的log_id-1進行比較,
0等于1-1 成立 則第一行記錄對應的num為@num的原始值0,
在對第一行記錄結(jié)束之后, @id被賦值為1,
接著看第二行記錄, 1 = 2 - 1 成立, 則 第二行記錄對應的num還是為@num的原始值0,
第三行同理
第四行l(wèi)og_id 為7, @id為第三行返回的3, 3 不等于7-1, 則第四行對應的@num應該為上一行返回的@num + 1, 即 第四行的num為1.?
第五行同理. 以此類推,把連續(xù)的數(shù)字分為了一組.
變量的執(zhí)行順序此處引用其他同學的總結(jié):
"目前的理解是:先執(zhí)行from后面的語句以對變量賦值,之后執(zhí)行order by語句锡足,根據(jù)列值進行排序疯攒,最后執(zhí)行select后面的語句蒙袍,使得定義變量得以自增。"
下周學習內(nèi)容:
1. 總結(jié)mysql45題內(nèi)容, 進行題型的分類討論歸納.
2. python方面,大概地過一遍學習視頻