五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

力扣習題練習一

2023-02-17 22:31 作者:泡椒芝士plus  | 我要投稿

1.第二高的薪水

方法一:使用子查詢和 LIMIT 子句

算法

將不同的薪資按降序排序,然后使用 LIMIT 子句獲得第二高的薪資。

MySQL

SELECT DISTINCT ? ?Salary AS SecondHighestSalaryFROM ? ?EmployeeORDER BY Salary DESCLIMIT 1 OFFSET 1然而,如果沒有這樣的第二最高工資,這個解決方案將被判斷為 “錯誤答案”,因為本表可能只有一項記錄。為了克服這個問題,我們可以將其作為臨時表。

MySQL

SELECT ? ?(SELECT DISTINCT ? ? ? ? ? ?Salary ? ? ? ?FROM ? ? ? ? ? ?Employee ? ? ? ?ORDER BY Salary DESC ? ? ? ?LIMIT 1 OFFSET 1) AS SecondHighestSalary;

方法二:使用 IFNULL 和 LIMIT 子句

解決 “NULL” 問題的另一種方法是使用 “IFNULL” 函數(shù),如下所示。

MySQL

SELECT ? ?IFNULL( ? ? ?(SELECT DISTINCT Salary ? ? ? FROM Employee ? ? ? ORDER BY Salary DESC ? ? ? ?LIMIT 1 OFFSET 1), ? ?NULL) AS SecondHighestSalary

2.組合兩個表

表1: Person

+-------------+---------+| 列名 ? ? ? ? | 類型 ? ? |+-------------+---------+| PersonId ? ?| int ? ? || FirstName ? | varchar || LastName ? ?| varchar |+-------------+---------+PersonId 是上表主鍵表2: Address

+-------------+---------+| 列名 ? ? ? ? | 類型 ? ?|+-------------+---------+| AddressId ? | int ? ? || PersonId ? ?| int ? ? || City ? ? ? ?| varchar || State ? ? ? | varchar |+-------------+---------+AddressId 是上表主鍵

方法:使用 outer join

算法

因為表 Address 中的 personId 是表 Person 的外關鍵字,所以我們可以連接這兩個表來獲取一個人的地址信息。

考慮到可能不是每個人都有地址信息,我們應該使用 outer join 而不是默認的 inner join。

MySQL

select FirstName, LastName, City, Statefrom Person left join Addresson Person.PersonId = Address.PersonId;注意:如果沒有某個人的地址信息,使用 where 子句過濾記錄將失敗,因為它不會顯示姓名信息。

3.分數(shù)排名


如果兩個分數(shù)相同,則兩個分數(shù)排名(Rank)相同。請注意,平分后的下一個名次應該是下一個連續(xù)的整數(shù)值。換句話說,名次之間不應該有“間隔”。

+----+-------+| Id | Score |+----+-------+| 1 ?| 3.50 ?|| 2 ?| 3.65 ?|| 3 ?| 4.00 ?|| 4 ?| 3.85 ?|| 5 ?| 4.00 ?|| 6 ?| 3.65 ?|+----+-------+例如,根據(jù)上述給定的 Scores 表,你的查詢應該返回(按分數(shù)從高到低排列):

+-------+------+| Score | Rank |+-------+------+| 4.00 ?| 1 ? ?|| 4.00 ?| 1 ? ?|| 3.85 ?| 2 ? ?|| 3.65 ?| 3 ? ?|| 3.65 ?| 3 ? ?|| 3.50 ?| 4 ? ?|+-------+------+重要提示:對于 MySQL 解決方案,如果要轉義用作列名的保留字,可以在關鍵字之前和之后使用撇號。例如 Rank

4.刪除重復電子郵箱


方法:使用 DELETE 和 WHERE 子句算法

我們可以使用以下代碼,將此表與它自身在電子郵箱列中連接起來。

MySQL

SELECT p1.*FROM Person p1, ? ?Person p2WHERE ? ?p1.Email = p2.Email # (自連接);然后我們需要找到其他記錄中具有相同電子郵件地址的更大 ID。所以我們可以像這樣給 WHERE 子句添加一個新的條件。

MySQL

SELECT p1.*FROM Person p1, ? ?Person p2WHERE ? ?p1.Email = p2.Email AND p1.Id > p2.Id;因為我們已經(jīng)得到了要刪除的記錄,所以我們最終可以將該語句更改為 DELETE。

MySQL

DELETE p1 FROM Person p1, ? ?Person p2WHERE ? ?p1.Email = p2.Email AND p1.Id > p2.Id

5.上升的溫度

1.select p1.id

from Weather p1,Weather p2

where datediff(p1.recordDate,p2.recordDate)=1 and p1.Temperature>p2.Temperature


2.

SELECT

# ? weather.id AS 'Id'

# FROM

# ? weather

# ? ? JOIN

# ? weather w ON DATEDIFF(weather.recordDate, w.recordDate) = 1

# ? ? AND weather.Temperature > w.Temperature


6.查詢結果的質(zhì)量和占比

解法一:SELECT

?query_name,

?ROUND(AVG(rating/position), 2) quality,

?ROUND(100*avg(rating<3), 2) poor_query_percentage

FROM Queries

GROUP BY query_name

要點:round(精度,標度),與函數(shù)混合使用放在前面,如,round(avg/max(),標度)


力扣習題練習一的評論 (共 條)

分享到微博請遵守國家法律
濮阳县| 康定县| 云和县| 韶关市| 四子王旗| 长治县| 临洮县| 山丹县| 临沭县| 西乌珠穆沁旗| 聂荣县| 郸城县| 镇康县| 章丘市| 中西区| 利辛县| 如东县| 边坝县| 元朗区| 陇川县| 通州区| 宁远县| 台南县| 兴义市| 巴彦县| 海淀区| 宜宾市| 廊坊市| 察雅县| 阳原县| 杭州市| 怀柔区| 昌平区| 伊通| 清河县| 庄河市| 鄂伦春自治旗| 治多县| 比如县| 海南省| 杭州市|