最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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(),標度)


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

分享到微博請遵守國家法律
吉首市| 尼勒克县| 城步| 申扎县| 鄂尔多斯市| 汉沽区| 海宁市| 金塔县| 富顺县| 赞皇县| 大安市| 清河县| 乐清市| 西乌| 南宁市| 郸城县| 景德镇市| 津市市| 辽阳县| 赤峰市| 旅游| 清徐县| 丰镇市| 大安市| 阳信县| 镇沅| 常宁市| 巴林右旗| 五大连池市| 乌海市| 高邮市| 安龙县| 遂平县| 竹北市| 绩溪县| 台江县| 湖北省| 瑞金市| 峨眉山市| 德安县| 临武县|