小美是一所中學的信息科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。
其中縱列的 id 是連續遞增的。
小美想改變相鄰倆學生的座位。
你能不能幫她寫一個 SQL query 來輸出小美想要的結果呢?
示例:
+—-+—-+| id | student |+—-+—-+| 1 | Abbot || 2 | Doris || 3 | Emerson || 4 | Green || 5 | Jeames |+—-+—-+
假如數據輸入的是上表,則輸出結果如下:
+—-+—-+| id | student |+—-+—-+| 1 | Doris || 2 | Abbot || 3 | Green || 4 | Emerson || 5 | Jeames |+—-+—-+
注意:
如果學生人數是奇數,則不需要改變最後一個同學的座位。
MySQL代碼:
1set @n=(select count(id) from seat);2select @m:=if(id=@n&&mod(@n,2)=1,id,if(mod(id,2)=0,id-1,id+1)) as id,student 3from seat, (select @m:=-1) b ORDER BY id ASC
編寫一個 SQL 查詢,獲取 Employee 表中第 n 高的薪水(Salary)。
+—-+—+| Id | Salary |+—-+—+| 1 | 100 || 2 | 200 || 3 | 300 |+—-+—+
例如上述 Employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。
+—-+| getNthHighestSalary(2) |+—-+| 200 |+—-+
MySQL代碼:
1CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT 2BEGIN 3 DECLARE m int; 4 set @i=0; 5 SELECT b.salary into m from (SELECT a.salary,@i:=@i+1 as rown 6 from (SELECT DISTINCT(salary) from employee ORDER BY salary DESC) a) b 7 WHERE b.rown=N; 8 RETURN m; 9END;1011select getNthHighestSalary(2);
編寫一個 SQL 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有「間隔」。
+—-+–+| Id | Score |+—-+–+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |+—-+–+
例如,根據上述給定的 Scores 表,你的查詢應該返回(按分數從高到低排列):
+–+-+| Score | Rank |+–+-+| 4.00 | 1 || 4.00 | 1 || 3.85 | 2 || 3.65 | 3 || 3.65 | 3 || 3.50 | 4 |+–+-+
MySQL代碼:
1SELECT m.Score, (SELECT count(t.Score)+1 from 2(SELECT s.Score,count(s.Score) from scores s GROUP BY Score ORDER BY Score DESC) t 3WHERE t.Score>m.Score) Rank 4FROM scores m 5ORDER BY m.Score DESC
編寫一個 SQL 查詢,查找所有至少連續出現三次的數字。
+—-++| Id | Num |+—-++| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 || 6 | 2 || 7 | 2 |+—-++
例如,給定上面的 Logs 表, 1 是唯一連續出現至少三次的數字。
+–+| ConsecutiveNums |+–+| 1 |+–+
MySQL代碼:
1SELECT cast(DISTINCT(t.Num) as ) ConsecutiveNums 2FROM (SELECT os.Num, @Rank:=IF(@pre=os.Num,@Rank+1,1) Rank,@pre:=os.Num 3from (SELECT Num FROM `logs` ORDER BY Num DESC) as os,(SELECT @Rank:=0,@pre:=-1) as init) as t WHERE t.Rank>3
Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id。
+—-+–+—+—-+| Id | Name | Salary | DepartmentId |+—-+–+—+—-+| 1 | Joe | 70000 | 1 || 2 | Henry | 80000 | 2 || 3 | Sam | 60000 | 2 || 4 | Max | 90000 | 1 |+—-+–+—+—-+
Department 表包含公司所有部門的信息。
+—-++| Id | Name |+—-++| 1 | IT || 2 | Sales |+—-++
編寫一個 SQL 查詢,找出每個部門工資最高的員工。例如,根據上述給定的表格,Max 在 IT 部門有最高工資,Henry 在 Sales 部門有最高工資。
+–++—+| Department | Employee | Salary |+–++—+| IT | Max | 90000 || Sales | Henry | 80000 |+–++—+
MySQL代碼:
1SELECT B.Name Department,A.Name Employee,A.Salary FROM (2 SELECT Name,Salary,DepartmentId FROM (3 SELECT * from Employee order by DepartmentId,Salary DESC4 ) C GROUP BY C.DepartmentId5 ) A 6 JOIN department B 7 ON A.DepartmentId=B.Id
Trips 表中存所有計程車的行程信息。每段行程有唯一健 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外鍵。 Status 是枚舉類型,枚舉成員爲 (『completed』, 『cancelled_by_driver』, 『cancelled_by_client』)。
+—-+-+-+—-+++| Id | Client_Id | Driver_Id | City_Id | Status |Request_at|+—-+-+-+—-+++| 1 | 1 | 10 | 1 | completed |2013-10-01|| 2 | 2 | 11 | 1 | cancelled_by_driver|2013-10-01|| 3 | 3 | 12 | 6 | completed |2013-10-01|| 4 | 4 | 13 | 6 | cancelled_by_client|2013-10-01|| 5 | 1 | 10 | 1 | completed |2013-10-02|| 6 | 2 | 11 | 6 | completed |2013-10-02|| 7 | 3 | 12 | 6 | completed |2013-10-02|| 8 | 2 | 12 | 12 | completed |2013-10-03|| 9 | 3 | 10 | 12 | completed |2013-10-03| | 10 | 4 | 13 | 12 | cancelled_by_driver|2013-10-03|+—-+-+-+—-+++
Users 表存所有用戶。每個用戶有唯一鍵 Users_Id。 Banned 表示這個用戶是否被禁止,Role 則是一個表示(『client』, 『driver』, 『partner』)的枚舉類型。
++—+—+| Users_Id | Banned | Role |++—+—+| 1 | No | client || 2 | Yes | client || 3 | No | client || 4 | No | client || 10 | No | driver || 11 | No | driver || 12 | No | driver || 13 | No | driver |++—+—+
寫一段 SQL 語句查出 2013年10月1日 至 2013年10月3日 期間非禁止用戶的取消率。基於上表,你的 SQL 語句應返回如下結果,取消率(Cancellation Rate)保留兩位小數。
+–+—-+| Day | Cancellation Rate |+–+—-+| 2013-10-01 | 0.33 || 2013-10-02 | 0.00 || 2013-10-03 | 0.50 |+–+—-+
MySQL代碼:
小美是一所中學的信息科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。
其中縱列的 id 是連續遞增的。
小美想改變相鄰倆學生的座位。
你能不能幫她寫一個 SQL query 來輸出小美想要的結果呢?
示例:
+—-+—-+| id | student |+—-+—-+| 1 | Abbot || 2 | Doris || 3 | Emerson || 4 | Green || 5 | Jeames |+—-+—-+
假如數據輸入的是上表,則輸出結果如下:
+—-+—-+| id | student |+—-+—-+| 1 | Doris || 2 | Abbot || 3 | Green || 4 | Emerson || 5 | Jeames |+—-+—-+
注意:
如果學生人數是奇數,則不需要改變最後一個同學的座位。
MySQL代碼:
1set @n=(select count(id) from seat);2select @m:=if(id=@n&&mod(@n,2)=1,id,if(mod(id,2)=0,id-1,id+1)) as id,student 3from seat, (select @m:=-1) b ORDER BY id ASC
編寫一個 SQL 查詢,獲取 Employee 表中第 n 高的薪水(Salary)。
+—-+—+| Id | Salary |+—-+—+| 1 | 100 || 2 | 200 || 3 | 300 |+—-+—+
例如上述 Employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。
+—-+| getNthHighestSalary(2) |+—-+| 200 |+—-+
MySQL代碼:
1CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT 2BEGIN 3 DECLARE m int; 4 set @i=0; 5 SELECT b.salary into m from (SELECT a.salary,@i:=@i+1 as rown 6 from (SELECT DISTINCT(salary) from employee ORDER BY salary DESC) a) b 7 WHERE b.rown=N; 8 RETURN m; 9END;1011select getNthHighestSalary(2);
編寫一個 SQL 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有「間隔」。
+—-+–+| Id | Score |+—-+–+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |+—-+–+
例如,根據上述給定的 Scores 表,你的查詢應該返回(按分數從高到低排列):
+–+-+| Score | Rank |+–+-+| 4.00 | 1 || 4.00 | 1 || 3.85 | 2 || 3.65 | 3 || 3.65 | 3 || 3.50 | 4 |+–+-+
MySQL代碼:
1SELECT m.Score, (SELECT count(t.Score)+1 from 2(SELECT s.Score,count(s.Score) from scores s GROUP BY Score ORDER BY Score DESC) t 3WHERE t.Score>m.Score) Rank 4FROM scores m 5ORDER BY m.Score DESC
編寫一個 SQL 查詢,查找所有至少連續出現三次的數字。
+—-++| Id | Num |+—-++| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 || 6 | 2 || 7 | 2 |+—-++
例如,給定上面的 Logs 表, 1 是唯一連續出現至少三次的數字。
+–+| ConsecutiveNums |+–+| 1 |+–+
MySQL代碼:
1SELECT cast(DISTINCT(t.Num) as ) ConsecutiveNums 2FROM (SELECT os.Num, @Rank:=IF(@pre=os.Num,@Rank+1,1) Rank,@pre:=os.Num 3from (SELECT Num FROM `logs` ORDER BY Num DESC) as os,(SELECT @Rank:=0,@pre:=-1) as init) as t WHERE t.Rank>3
Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id。
+—-+–+—+—-+| Id | Name | Salary | DepartmentId |+—-+–+—+—-+| 1 | Joe | 70000 | 1 || 2 | Henry | 80000 | 2 || 3 | Sam | 60000 | 2 || 4 | Max | 90000 | 1 |+—-+–+—+—-+
Department 表包含公司所有部門的信息。
+—-++| Id | Name |+—-++| 1 | IT || 2 | Sales |+—-++
編寫一個 SQL 查詢,找出每個部門工資最高的員工。例如,根據上述給定的表格,Max 在 IT 部門有最高工資,Henry 在 Sales 部門有最高工資。
+–++—+| Department | Employee | Salary |+–++—+| IT | Max | 90000 || Sales | Henry | 80000 |+–++—+
MySQL代碼:
1SELECT B.Name Department,A.Name Employee,A.Salary FROM (2 SELECT Name,Salary,DepartmentId FROM (3 SELECT * from Employee order by DepartmentId,Salary DESC4 ) C GROUP BY C.DepartmentId5 ) A 6 JOIN department B 7 ON A.DepartmentId=B.Id
Trips 表中存所有計程車的行程信息。每段行程有唯一健 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外鍵。 Status 是枚舉類型,枚舉成員爲 (『completed』, 『cancelled_by_driver』, 『cancelled_by_client』)。
+—-+-+-+—-+++| Id | Client_Id | Driver_Id | City_Id | Status |Request_at|+—-+-+-+—-+++| 1 | 1 | 10 | 1 | completed |2013-10-01|| 2 | 2 | 11 | 1 | cancelled_by_driver|2013-10-01|| 3 | 3 | 12 | 6 | completed |2013-10-01|| 4 | 4 | 13 | 6 | cancelled_by_client|2013-10-01|| 5 | 1 | 10 | 1 | completed |2013-10-02|| 6 | 2 | 11 | 6 | completed |2013-10-02|| 7 | 3 | 12 | 6 | completed |2013-10-02|| 8 | 2 | 12 | 12 | completed |2013-10-03|| 9 | 3 | 10 | 12 | completed |2013-10-03| | 10 | 4 | 13 | 12 | cancelled_by_driver|2013-10-03|+—-+-+-+—-+++
Users 表存所有用戶。每個用戶有唯一鍵 Users_Id。 Banned 表示這個用戶是否被禁止,Role 則是一個表示(『client』, 『driver』, 『partner』)的枚舉類型。
++—+—+| Users_Id | Banned | Role |++—+—+| 1 | No | client || 2 | Yes | client || 3 | No | client || 4 | No | client || 10 | No | driver || 11 | No | driver || 12 | No | driver || 13 | No | driver |++—+—+
寫一段 SQL 語句查出 2013年10月1日 至 2013年10月3日 期間非禁止用戶的取消率。基於上表,你的 SQL 語句應返回如下結果,取消率(Cancellation Rate)保留兩位小數。
+–+—-+| Day | Cancellation Rate |+–+—-+| 2013-10-01 | 0.33 || 2013-10-02 | 0.00 || 2013-10-03 | 0.50 |+–+—-+
MySQL代碼:
看著2017年的星象盤和對明年年運的手寫筆記,就要開始寫新的年度星座最強事業、錢財、感情運了!而我想說真的沒有十全十美的星座和運勢,只有用占星系統觀察12星座運勢,找出相比之下運勢更有優勢和機會的星座群體,來和大家分享,給予你範圍參考。希望你能在未來一年內知己知彼百戰百勝,也希望這篇運勢文中「有優勢」的星座能夠更好,有運勢小遺憾的星座能更努力地去開闢新田園。
運勢閱讀請參考本命盤、上升星座、太陽星座。
第一名:上升星座或太陽星座是處女座(名利雙收)
我想來想去最後還是把處女座放在了第一名。恭喜處處們!因為行星的完美互動,所以我會認為你在新的一年裡事業能夠大展宏圖,更上一層樓。 2017你的工作能得到他人的幫助,容易遇到貴人,好像總有人能夠支持到你。此外你和同事的關係也不錯,如果你是公司上級層面的處女座,那麼你的下屬也能讓你省心,關係良好。 2017年合作運也會較為不錯,一些大項目容易談成,從而拉動財運。除此之外,我會覺得你在這一年容易獲得好名聲,好聲望,名氣(在行業內)也會大大增長,使你有口碑。
第二名:上升星座或太陽星座是獅子座(鞏固專長)、水瓶座(公司給力)
獅子座的事業運勢總體來說會比2016年要好許多,特別在交流、通訊、運勢、文字、土木、合作方面容易取得成績,特別適合學習某項技能知識,有助於提升事業。但是2017年也可能會比較忙碌,瑣碎事多,讓你分心,並且存在競爭壓力,甚至會有小人,所以還需要你打起精神來面對,不要掉以輕心。
水瓶座們,雖然2017年會有冥王星逆行、水星逆行、木星逆行、金星逆行,火星的狀態比去年欠佳。 。看上去好像煩人事多了些。但是整體運勢你是不錯的,特別在於開拓市場方面,利於做文化或產品的宣傳,以及推廣,你也可以依靠你自身的好人緣得到幫助,對於從事銷售的水瓶座也比較有看點。 2017年對於部分水瓶座來說,得到的公司福利不少,比如你的公司上市了,或者業績上升,有出國旅行福利,或者你跳槽到了更好的公司等,從而讓你的身價也有所提高。我也會建議你們多提升自己的專長,提高學歷等。
第三名:上升星座或太陽星座是白羊座(面臨選擇)、雙子座(會玩才贏)、天秤座(面臨變動)、射手座(吃苦當補)、摩羯座(幕後推動)
白羊座對於你們來說,2017年就像是「在摩天大樓上行走鋼絲」的人,似乎有榮耀和成果,也有風險和意外,一切就看你如何選擇與把握了。 2017年內你可能會有突然的一個決定,這個決定可能改變了你的人生整體方向,開闢一片新天地或者是化為零,重新來過,可能你在2016年的最後兩個月就能開始有所感受。一些白羊則是因為生活或者感情、家庭上的事而影響到工作,有些人會跳槽,離開家鄉去外面創業看看,或者從外地歸來,回到家創業,都有可能。
雙子座2017年對於從事藝術、保險、理財、金融、投資、海外貿易、娛樂產業和創業的雙子座來說會比較添彩,你們的工作性質需要你們「玩得起來」,雖然會很辛苦,有些雙子還開始搭上了身體健康,但是你們很樂忠於這樣的「享受」,也許創業的結果是滿足的吧。同時,2017年也是擴大人脈,認識更多人才,與玩得到一起的人多做交流的年份。但是依舊需要提醒你們會比較辛苦,並且對於一些人來說合作和贊助方面會有些小波折,還需要耐心地去和合作方第三方等協商、溝通、敲定,你需要用你的說服力和魅力去「軟化」合作上、投資商和客戶。
同樣在2017年非常容易出現變化的天秤座們,這也是你們需要接受挑戰,重新上戰的一年。可以說,這一年你們會比較辛苦操勞,瑣事多,而且有競爭壓力,凡事還需要依靠自己做主動得到。 2017年出行也會特別地勤快,可能需要不同的地方跑來跑去,而且可能有業績指標,需要你們加強自己本身的專業水準能力,所以學習也是2017年的課題之一。事業合作方面容易有變化,需要耐心地與你的客戶方和合作方做溝通。一些人會因為搬家、離開家鄉等原因影響工作,一些人會跳槽、創業。
射手座們這一年依舊會繼承上一年的模式,比較辛苦和容易奔波出差、體力透支地操勞,似乎就是有做不完的事情,讓你恨不得有分身術。但是2017年會比2016年好很多,勞有所得。並且你容易開拓市場,得到新一批人脈,或者你的產品被大眾認可,可以面向他們,這本身就會使你們、和從事銷售、市場、運營、媒體類工作的射手座們得到優勢。 2017年建議你們認真踏實,學習和公關事務跟上,易對事業工作有助力。
摩羯座們,你在2017年可能會得到來自事業的「希望」,得到名譽聲望等,但是同時,壓力和責任在身邊,有時候也容易被命運牽著走的感覺。 2017年你可能會接觸一些冷門的行業,或者你自身接觸到的工作需要低調、學習為主、有幕後工作的性質等。一些人會開始經歷革命的變化,當然這只是開始,希望你能選擇正確;一些人會在家庭家人和事業工作中做平衡。
第四名:上升星座或太陽星座是金牛座(消除內憂)、巨蟹座(頂住壓力)、天蠍座(閉關內修)、雙魚座(擔起責任)
金牛座們的事業工作運勢會比去年有所提升,可能在2016年年末開始你就越來越關注自己的事業,或者越來越有責任心和事業心。 2017年會比較容易為之操勞,做的工作比較辛苦,瑣碎事多,但是對於一些人來說,這樣的操勞實際上是操心,你容易為事業工作想得多,有擔憂或顧慮。而一些人則是事業沒有進展,就像一顆石頭扔進大海沒有回應,所以你會顯得比較被動,從體而言,需要更多付出和努力。部分人會從事幕後或者計算工作。
巨蟹座的問題和這一組基本差不多,你們可能從2016年就感覺到工作是做不完的,需要你們馬不停蹄地來回奔波,總體來說會比較辛苦,並且伴隨行業競爭壓力,真的需要你們打氣10分的精神來工作。除了延續上一年的「辛苦」之外,2017年也會很容易出現變動,比如因為家庭家人原因、感情婚姻原因而影響到事業,所以你可能需要在兩者之間取得平衡。 2017年你的同事或者下屬也會逐漸給力起來,一些人會從外地回到家鄉工作,而一些巨蟹則相反,他們可能會從家鄉離開到外地工作,或者和國外、外地事務有交集。
想不到那麼快又到了2017的年的中旬了,過了五六月份,又即將進入到下半年了,一直忙碌在工作中的職場人士,你可否有回望自己這半年多做了什麼努力了?又獲得怎樣的回報?如果不滿自己在工作中的成績,不如自己創業當老闆吧。下面看看:2017年下半年創業能取得收獲的生肖。
文章內容目錄
屬狗:自主創作
生肖屬狗的朋友在2017年裡事業運程不錯,而且有著兩顆與事業相關的吉星在旁邊相照,為其鼓舞助威,不過在上半年期間,好像還沒有起到很大的成效,事業並不見得很旺盛,但是會在下半年發揮出效用了哦,近旁的兩顆吉星會給到屬狗的朋友帶來很多靈感,讓還在迷茫的計劃,突然間就明朗起來了,逐漸知道了創業的發展方向,而且一切都進行得很順利,從而慢慢走上正軌哦!
屬虎:自主創業
生肖屬虎的朋友在去年犯太歲,運氣比較低落,而今年的運勢卻能有一個明顯的上升哦,雖然在上半年運氣還是平平,各方面都沒有什麼太大的進步,但是能夠一直保持努力發奮態度的屬虎人,在下半年就開始步步高升了,事業能夠一帆風順,你的自主創業之路開始的時候沒有什麼大困難,而且在你的刻苦奮鬥下,還逐步走上了軌跡呢,業務拓展得越來越大了,是的創業也收到了很大的收獲哦!