头歌·数据库系统 实行8 SQL的复杂多表查询-2(节选)

打印 上一主题 下一主题

主题 1913|帖子 1913|积分 5739

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第7关:基于派生表查询每个队员最小memory的user_id及题目编号problem_id(查询结果需去重) 

  1. USE `sqlexp-sztuoj`;
  2. ######## Begin ########
  3. SELECT DISTINCT s.user_id, s.problem_id
  4. FROM solution s
  5. JOIN (
  6.     SELECT user_id, MIN(memory) AS m
  7.     FROM solution
  8.     GROUP BY user_id
  9. ) sb
  10. ON s.user_id = sb.user_id
  11. WHERE s.memory = sb.m;
  12. ######## End ########
复制代码
第8关:基于派生表查询2020年9月24日每个队员每道题目末了一次提交的记载

  1. USE `sqlexp-sztuoj`;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. SELECT s.*
  5. FROM solution s
  6. JOIN (
  7.     SELECT user_id, problem_id, MAX(in_date) AS max_date
  8.     FROM solution
  9.     WHERE DATE(in_date) = '2020-09-24'
  10.     GROUP BY user_id, problem_id
  11. ) t
  12. ON s.user_id = t.user_id AND s.problem_id = t.problem_id AND s.in_date = t.max_date;
  13. ########## End ##########
复制代码
 第9关:用ANY/ALL实现查询2020年9月24日做过1005题目的选手user_id

  1. USE `sqlexp-sztuoj`;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. SELECT t.user_id
  5. FROM (
  6.     SELECT user_id, MIN(memory) AS min_mem
  7.     FROM solution
  8.     WHERE problem_id = 1005 AND DATE(in_date) = '2020-09-24'
  9.     GROUP BY user_id
  10. ) t
  11. WHERE t.min_mem < ANY (
  12.     SELECT MIN(memory)
  13.     FROM solution
  14.     WHERE problem_id = 1005 AND DATE(in_date) = '2020-09-25'
  15.     GROUP BY user_id
  16. );
  17. ########## End ##########
复制代码
第10关:用聚集查询实现查询2020年9月24日做过1005题目的选手user_id

  1. USE `sqlexp-sztuoj`;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. SELECT t.user_id
  5. FROM (
  6.     SELECT user_id, MIN(memory) AS min_mem_24
  7.     FROM solution
  8.     WHERE problem_id = 1005 AND DATE(in_date) = '2020-09-24'
  9.     GROUP BY user_id
  10. ) t
  11. WHERE t.min_mem_24 < ANY (
  12.     SELECT MIN(memory)
  13.     FROM solution
  14.     WHERE problem_id = 1005 AND DATE(in_date) = '2020-09-25'
  15.     GROUP BY user_id
  16. );
  17. ########## End ##########
复制代码
第11关:求至少用了供应商 S1所供应的全部零件的工程号 JNO 

  1. USE mydata;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. SELECT DISTINCT JNO
  5. FROM SPJ AS J1
  6. WHERE NOT EXISTS (
  7.     SELECT *
  8.     FROM SPJ AS J2
  9.     WHERE J2.SNO = 'S1'
  10.       AND NOT EXISTS (
  11.           SELECT *
  12.           FROM SPJ AS J3
  13.           WHERE J3.JNO = J1.JNO
  14.             AND J3.PNO = J2.PNO
  15.       )
  16. );
  17. ########## End ##########
复制代码





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表