目錄
第1關:基于派生表查詢每個隊員解答中超過他平均memory的user_id及題目編號problem_id
第2關:用ANY/ALL實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間早即可的選手
第3關:用聚集查詢實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間早即可的選手
第4關:用ANY/ALL實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
第5關:用聚集查詢實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
第6關:用 NOT EXISTS 實現查詢至少參與過"202002020217"選手參與過的所有比賽的選手信息
第7關:求至少用了供應商 S1所供應的全部零件的工程號 JNO
如果對你有幫助的話,不妨點贊收藏評論一下吧,愛你么么噠😘??????
第1關:基于派生表查詢每個隊員解答中超過他平均memory的user_id及題目編號problem_id
任務描述
基于派生表查詢每個隊員解答中超過他平均memory的user_id及題目編號problem_id(查詢結果無需去重) 注意:按課本的別稱表名+列名的方式,mysql8.0可以過,但oj題用的是mysql5.7,不能通過,所以僅用表名別稱。
相關知識
solution:選手提交的題目解答 solution表如下圖(僅顯示前幾條):
現已構建solution表,結構信息如下:
開始你的任務吧,祝你成功!
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########select solution.user_id, problem_id
from solution
join (select
user_id, avg(memory)
as am
from solution
group by user_id) uam
on solution.user_id = uam.user_id and memory > am;########## End ##########
第2關:用ANY/ALL實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間早即可的選手
任務描述
用ANY/ALL實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間(reg_time)早即可的選手信息
相關知識
users為選手信息表; users表如下圖(僅顯示前幾條):
現已構建users表,結構信息如下:
開始你的任務吧,祝你成功
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########
select user_id, reg_time, name
from users
where user_id like '2019%' and reg_time < any(select reg_time from users where user_id like '2020%');########## End ##########
第3關:用聚集查詢實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間早即可的選手
任務描述
用聚集查詢實現查詢2019級選手(user_id前4位為2019)滿足比2020級其中一個選手注冊時間(reg_time)早即可的選手信息
相關知識
users為選手信息表; users表如下圖(僅顯示前幾條):
現已構建users表,結構信息如下:
開始你的任務吧,祝你成功
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########
select user_id, reg_time, name
from users
where user_id like '2019%' and reg_time < (select max(reg_time) from users where user_id like '2020%');########## End ##########
第4關:用ANY/ALL實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
任務描述
用ANY/ALL實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
相關知識
users為選手信息表; users表如下圖(僅顯示前幾條):
現已構建users表,結構信息如下:
開始你的任務吧,祝你成功!
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########
select user_id, reg_time, name
from users
where user_id like '2019%' and reg_time < all(select reg_timefrom userswhere user_id like '2020%'
);########## End ##########
第5關:用聚集查詢實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
任務描述
聚集查詢實現查詢2019級選手所有比2020級選手注冊時間都早的選手信息
相關知識
users為選手信息表; users表如下圖(僅顯示前幾條):
現已構建users表,結構信息如下:
開始你的任務吧,祝你成功
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########
select user_id, reg_time, name
from users
where user_id like '2019%' and reg_time < (select min(reg_time)from userswhere user_id like '2020%'
);########## End ##########
第6關:用 NOT EXISTS 實現查詢至少參與過"202002020217"選手參與過的所有比賽的選手信息
任務描述
用 NOT EXISTS 實現查詢至少參與過"202002020217"選手參與過的所有比賽的選手信息,contest_id不為NULL
相關知識
1、users為選手信息表; users表如下圖(僅顯示前幾條):
現已構建users表,結構信息如下:
2、solution為選手提交的題目解答 solution表如下圖(僅顯示前幾條):
現已構建solution表,結構信息如下:
開始你的任務吧,祝你成功!
USE `sqlexp-sztuoj`;
#請在此處添加實現代碼
########## Begin ##########
select u.user_id, u.reg_time, u.name
from users u
where not exists(select contest_id from (select s.contest_id from solution swhere s.user_id = '202002020217' and s.contest_id is not null) s1where not exists(select user_id, contest_id from solution s2where s1.contest_id = s2.contest_id and u.user_id = s2.user_id)
);########## End ##########
第7關:求至少用了供應商 S1所供應的全部零件的工程號 JNO
任務描述
求至少用了供應商 S1所供應的全部零件的工程號 JNO
相關知識
供應情況表SPJ由供應商代碼(SNO)、零件代碼(PNO)、工程項目代碼(JNO)、供應數量(QTY)組成,標識某供應商 供應某種零件 給某工程項目的數量為QTY。 SPJ表如下圖:
現已構建SPJ表,結構信息如下:
開始你的任務吧,祝你成功!
USE mydata;
#請在此處添加實現代碼
########## Begin ##########
select JNO
from SPJ
where PNO ='P1' and JNO in
(select JNOfrom SPJwhere PNO='P2');
########## End ##########