2018 8 9SQL資料庫學習筆記

2021-08-22 13:33:34 字數 1462 閱讀 8172

今天將leetcode上19道資料庫的題刷完了 明天做什麼暫時還沒有明確計畫

對於搜尋最大並不困難,只需要max(項)即可,對於搜尋第二大項,就需要搜尋max(項) 以及 該項小於max(項)

select max(項) from where 項 < max(項)(176.第二高的薪水)

改變思路,從複雜的更換名字變為更換id。判斷id是奇數還是偶數,除此以外奇數時判斷id是否為最大id,使用case when when else語句即可作好更換,隨後利用count計數再用order by重新排序即可(626.換座位)

語法上面有點新奇,需要先用乙個count(distinct)語句來消除分數的並列,隨後使用score與單個score對比進行排名,最後使用order by語句重新排序(178.分數排名)

由於連續出現三次因此採用表例項化,例項化為三個一樣的表,後兩個表id平移一位和兩位,最後三個表同一位id數字進行對比,如果一樣則復合,除此以外還需要使用distinct語句來消去重複出現的數字(180.連續出現的數字)

比較有趣的函式編寫題目 order by語句後的擴充套件(177.第n高的薪水)

這道題有點神奇,使用datediff語句比較難消去一些錯誤的例子,於是選擇使用date_add語句會遇到測試案例報錯,報錯的地點是5月底和6月初的跨度,按道理時間函式是不會有這個錯誤的,隨後看到題目的下方寫著

note:

每天只有一行記錄,日期隨著 id 的增加而增加。

於是把利用date作判斷改為使用id作判斷,簡單非常多(601.體育館的**量)

這道題有幾個新的知識點,包括使用round函式來保留小數,還有inner join實現篩選表中符合條件項的需求,最後還用了between and篩選日期區間

關於inner join與前面left join等好幾個的差異可以看這個鏈結,採用了文氏圖的畫法使得結果非常直觀

**sql的inner join、left join、right join、full outer join、union、union all的區別(262.行程和使用者)

select d.name as department,e.name as employee,e.salary

from department d,employee e

where e.departmentid = d.id and e.salary = (select max(salary) from employee where departmentid=d.id)

where裡面的幾個篩選語句要考慮好(184.部門工資最高的員工)

這道題跟262其實挺像的,在184的基礎上where語句稍作修改即可

(select count(distinct salary) from employee where departmentid=d.id and salary>e.salary)<3
(185.部門工資前三高的員工)

SQL資料庫學習

一 認識資料庫 1 資料庫的基本概念 2 資料庫常用物件 3 資料庫的組成 資料庫主要由檔案和檔案組組成。資料庫中所有的資料和物件都被儲存在檔案中。二 建立資料庫 1 建立資料庫 物件資源管理器 資料庫 右擊 新建資料庫 三 運算元據表與檢視 1 建立資料表 空值 表示資料未知。非空值 資料列不允許...

資料庫 sql 學習筆記

不積跬步,無以至千里 sql 學習筆記 1.select對於null的元素會輸出 2.distinct如果要用,只能放在select後,也就是只對整個要投影的元組起作用,不能只對某個屬性 3.在mysql裡ifnull,sqlserver是isnull 4.經過group分組後,group後面的屬性...

資料庫學習 SQL語言

sql語言 一種特殊的程式語言,關係型資料庫操作的語言。用來訪問資料,對資料庫進行更新和管理。structured query language 結構化的查詢語言。在關係型資料庫中,資料存在於表中。表的設計是這樣的,反映的是資料結構之間的關係。字段 資料型別 長度 約束 資料型別的分類 文字類 ch...