日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库 CURD测试题【中等】

發(fā)布時間:2023/12/10 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库 CURD测试题【中等】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1.換座位(交換相鄰的id)
      • 基本信息
      • 要求
      • 答案[case when]
    • 2.分數(shù)排名(分組,排序)
      • 基本信息
      • 要求
      • 答案
    • 3.連續(xù)出現(xiàn)的數(shù)字(連接)
      • 信息
      • 要求
      • 答案
    • 4.第N高的薪水(函數(shù))
      • 信息
      • 要求
      • 答案
    • 5.各個部門工資最高的員工(分組,連接)
      • 信息
      • 要求
      • 答案
    • 6.統(tǒng)計各專業(yè)人數(shù)
    • 7.查詢回答率最高的問題
    • 8.至少有5名直接下屬的經(jīng)理

1.換座位(交換相鄰的id)

基本信息

小美是一所中學(xué)的信息科技老師,她有一張 seat 座位表,平時用來儲存學(xué)生名字和與他們相對應(yīng)的座位 id。

其中縱列的 id 是連續(xù)遞增的

小美想改變相鄰倆學(xué)生的座位。

你能不能幫她寫一個 SQL query 來輸出小美想要的結(jié)果呢?

示例:

idstudent
1Abbot
2Doris
3Emerson
4Green
5Jeames

要求

假如數(shù)據(jù)輸入的是上表,則輸出結(jié)果如下:

idstudent
1Doris
2Abbot
3Green
4Emerson
5Jeames
  • 注意:
    如果學(xué)生人數(shù)是奇數(shù),則不需要改變最后一個同學(xué)的座位。

答案[case when]

select(casewhen mod(id,2) = 1 and id != (select count(*) from seat) then id+1when mod(id,2)=0 then id-1else id end) as id , student from seat order by id asc

2.分數(shù)排名(分組,排序)

基本信息

編寫一個 SQL 查詢來實現(xiàn)分數(shù)排名。如果兩個分數(shù)相同,則兩個分數(shù)排名(Rank)相同。請注意,平分后的下一個名次應(yīng)該是下一個連續(xù)的整數(shù)值。換句話說,名次之間不應(yīng)該有“間隔”。

IdScore
13.50
23.65
34.00
43.85
54.00
63.65

要求

例如,根據(jù)上述給定的 Scores 表,你的查詢應(yīng)該返回(按分數(shù)從高到低排列):

ScoreRank
4.001
4.001
3.852
3.653
3.653
3.504

答案

select s.Score, count(distinct t.Score) Rank from Scores s join Scores t on s.Score <= t.Score group by s.Id order by s.Score desc;

3.連續(xù)出現(xiàn)的數(shù)字(連接)

信息

編寫一個 SQL 查詢,查找所有至少連續(xù)出現(xiàn)三次的數(shù)字。

IdNum
11
21
31
42
51
62
72

要求

例如,給定上面的 Logs 表, 1 是唯一連續(xù)出現(xiàn)至少三次的數(shù)字。

ConsecutiveNums
1

答案

這道題給了我們一個Logs表,讓我們找Num列中連續(xù)出現(xiàn)相同數(shù)字三次的數(shù)字,那么由于需要找三次相同數(shù)字,所以我們需要建立三個表的實例,我們可以用l1分別和l2, l3內(nèi)交,l1和l2的Id下一個位置比,l1和l3的下兩個位置比,然后將Num都相同的數(shù)字返回即可:

解法一:

select distinct l1.Num as ConsecutiveNums from Logs l1 join Logs l2 on l1.Id = l2.Id - 1 join Logs l3 on l1.Id = l3.Id - 2 where l1.Num = l2.Num and l2.Num = l3.Num;

我們在本地已經(jīng)新建了表Logs.

4.第N高的薪水(函數(shù))

信息

編寫一個 SQL 查詢,獲取 Employee 表中第 n 高的薪水(Salary)。

IdSalary
1100
2200
3300

要求

例如上述 Employee 表,n = 2 時,應(yīng)返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查詢應(yīng)返回 null。

getNthHighestSalary(2)
200

答案

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGINSET N = N - 1;RETURN (select distinct Salary from Employee group by Salaryorder by Salary desc limit 1 offset N); END

5.各個部門工資最高的員工(分組,連接)

信息

Employee 表包含所有員工信息,每個員工有其對應(yīng)的 Id, salary 和 department Id。

IdNameSalaryDepartmentId
1Joe700001
2Henry800002
3Sam600002
4Max900001

Department 表包含公司所有部門的信息。

IdName
1IT
2Sales

要求

編寫一個 SQL 查詢,找出每個部門工資最高的員工。例如,根據(jù)上述給定的表格,Max 在 IT 部門有最高工資,Henry 在 Sales 部門有最高工資。

DepartmentEmployeeSalary
ITMax90000
SalesHenry80000

答案

select Department.Name as Department, Employee.Name as Employee,Salary from Employee join Department on Employee.DepartmentId = Department.Id where (Employee.salary, Employee.departmentId) in (select max(salary),departmentIdfrom employeegroup by departmentId );

6.統(tǒng)計各專業(yè)人數(shù)

7.查詢回答率最高的問題

8.至少有5名直接下屬的經(jīng)理

SELECTName FROMEmployee AS t1 JOIN(SELECTManagerIdFROMEmployeeGROUP BY ManagerIdHAVING COUNT(ManagerId) >= 5) AS t2ON t1.Id = t2.ManagerId);

總結(jié)

以上是生活随笔為你收集整理的数据库 CURD测试题【中等】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。