这篇文章回顾我在SQLzoo(http://zh.sqlzoo.net/wiki/)上练习时觉得有困难的练习题以及从练习中get到的新知识点。

  1. 选出人口多或者面积大的国家,但不能包括同时满足这两个条件的国家
    提示要用操作符XOR,此操作符满足条件1或条件2,但是不同时满足条件1和条件2。
    因此本题的答案是:
    SELECT name, population, area
    FROM world
    WHERE area>3000000 XOR population >250000000;

  2. 近似函数ROUND,FLOOR,CEIL https://sqlzoo.net/wiki/ROUND
    ROUND(f,p) 用来取近似值,p表示保留小数点后几位数字,如果p是负数,则表示近似到10的几次方,负数也可以理解为保留到小数点前几位数。
    FLOOR(f) 向下取整数
    CEIL(f) 向上取整数

  3. Find all details of the prize won by EUGENE O’NEILL
    找出EUGENE O’NEILL所获奖的信息

名字中的单引号与语句中的单引号冲突,那么怎么表示名字中字母O后面的单引号呢?
在题目中已经给我们提示了!
Escaping single quotes
You can’t put a single quote in a quote string directly. You can use two single quotes within a quoted string.
答案:
SELECT *
FROM nobel
WHERE winner = ‘EUGENE O’‘NEILL’;

用两个单引号代替,注意这里不是一个双引号“,而是两个单引号 ‘’哦~

  1. 显示1984年的诺贝尔获奖者和所获奖的学科,按照学科和获奖者姓名来排序,化学和物理排在最后。
    Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.
    此题中 The expression subject IN (‘Chemistry’,‘Physics’) can be used as a value - it will be 0 or 1.

答案:
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY subject IN (‘Physics’,‘Chemistry’),subject,winner;

  1. 比其同大洲的其他国家人口多三倍的国家
    Some countries have populations more than three times that of any of their neighbours (in the same continent). Give the countries and continents.
    答案:
    SELECT name, continent
    FROM world x
    WHERE population/3 > ALL(SELECT population FROM world y WHERE x.continent=y.continent AND x.name!=y.name)

  2. 找出该洲所有国家人口均少于25000000的大洲
    Find the continents where all countries have a population <= 25000000. Then find the names of the countries associated with these continents. Show name, continent and population.
    答案:
    SELECT name,continent,population
    FROM world x
    WHERE 25000000>=ALL(SELECT population FROM world y WHERE x.continent=y.continent)

  3. 列出每个大洲按照字母排序的第一个国家
    List each continent and the name of the country that comes first alphabetically.
    这道题可难为坏了我!但是没想到答案这么简单。一个min 函数轻轻松松搞定字母排序的问题。
    答案:
    SELECT continent,min(name)
    FROM world
    GROUP BY continent

JOIN

  1. 至少当过30次主角的演员
    Obtain a list, in alphabetical order, of actors who’ve had at least 30 starring roles.
    答案
    SELECT name
    FROM movie JOIN casting ON movie.id=movieid
    JOIN actor ON actorid=actor.id
    WHERE ord=1
    GROUP BY name
    HAVING COUNT(movieid)>=30
    ORDER BY name

  2. For every match involving ‘POL’, show the matchid, date and the number of goals scored.

答案:
SELECT matchid,mdate,count(teamid)
FROM game JOIN goal ON matchid = id
WHERE (team1 = ‘POL’ OR team2 = ‘POL’)
GROUP BY matchid,mdate

这道题刚开始我不知道GROUP BY 后面应该跟一组数据的。我只写了group by matchid,报错。

SELF JOIN

  1. 找出从Craiglockhart 到 Lochend的换乘路线、和换乘站。
    Find the routes involving two buses that can go from Craiglockhart to Lochend.
    Show the bus no. and company for the first bus, the name of the stop for the transfer,
    and the bus no. and company for the second bus.

不得不承认这道题还是有点难度的

SELECT DISTINCT R1.num,R1.company, S2.name, R4.num,R4.company
FROM route R1 JOIN route R2 ON (R1.num=R2.num AND R1.company=R2.company)
JOIN route R3 ON R2.stop=R3.stop
JOIN route R4 ON (R3.num=R4.num AND R3.company=R4.company)
JOIN stops S1 ON S1.id=R1.stop
JOIN stops S2 ON S2.id=R2.stop
JOIN stops S3 ON S3.id=R4.stop
WHERE S1.name=‘Craiglockhart’ AND S3.name = ‘Lochend’

当然也可以不用JOIN 语句
SELECT R1.num,R1.company, S2.name, R4.num,R4.company
FROM route R1, route R2, route R3, route R4,stops S1, stops S2, stops S3, stops S4
WHERE S1.name=‘Craiglockhart’ AND S1.id=R1.stop
AND R1.num=R2.num AND R1.company=R2.company
AND R2.stop=R4.stop AND S2.id=R2.stop
AND S3.id=R3.stop AND S4.id=R4.stop
AND S3.name=‘Lochend’ AND R3.num=R4.num
AND R3.company=R4.company

SQLzoo练习题回顾相关推荐

  1. SQLZOO练习题 (8)

    SQLZOO练习题 (8) 1.列出时间为1962年的电影编号,名称 SELECT id, titleFROM movieWHERE yr=1962 2.给出<公民凯恩>的年分. sele ...

  2. SQLZOO练习题(3)

    SQLZOO练习题(3) 1.查找所有国家的名字,大洲,人口 select name, continent, population from world 2.查找人口多余两亿的国家名字 select ...

  3. 【SQL】sqlzoo练习题Scottish Parliament

    原地址:https://sqlzoo.net/wiki/Scottish_Parliament/zh 上一篇:sqlzoo练习题Using Null 1.一個成員被工黨逐出黨,現沒屬任何黨.找出他.( ...

  4. 【SQL】sqlzoo练习题Music Tutorial

    原地址:https://sqlzoo.net/wiki/Music_Tutorial/zh 上一篇:sqlzoo练习题The JOIN operation 1.找出收錄歌曲song 'Alison'的 ...

  5. SQLZOO练习题(1)

    SQLZOO练习题(1) sqlzoo上较难的一些sql查询练习题及其解题思路. 题目: Put the continents right- Oceania becomes Australasia C ...

  6. SQLZOO练习题答案参考(全)

    自学SQL将近一年,比较有名的SQL题库都尝试刷过,目前SQLZOO.XUESQL.牛客.Hackerrank初阶中阶.炼码基本刷完,Hackerrank高阶.Leetcode.SQL_intern仍 ...

  7. SQLZOO 练习题 6 JOIN

    6 JOIN 1.Modify it to show the matchid and player name for all goals scored by Germany. To identify ...

  8. python练习题回顾

    练习一&&练习二 1-2 在Python中的关系运算符可以连续使用.如:3<a<4. T 1-3 Python中条件表达式中不允许使用赋值运算符"=". ...

  9. SQLZOO 答案—完整版

    文章目录 SELECT basics SELECT from WORLD SELECT from Nobel SELECT within SELECT SUM and COUNT The JOIN o ...

最新文章

  1. 学习笔记《Java多线程编程实战指南》四
  2. 标准模板库之容器-《C++标准库(第二版)》读书笔记
  3. sshclientCRT连接linux使用技巧
  4. 刺客信条全球眼终结者 绿色破解版
  5. 客户关系管理(CRM)基础篇
  6. 广州坐标系转换大地2000_实用帖 | 从地方坐标系到2000国家大地坐标系的转换方法...
  7. 小米笔记本装了linux后u盘启动不了,小米笔记本电脑怎么设置u盘启动
  8. 水星逆行对股市涨跌的实证检验
  9. clappr.js:Web开源媒体播放器,可扩展网页媒体播放器
  10. 如何快速掌握一门技术
  11. 局域网雨云蠕虫病毒的处理
  12. 2021数据分析师薪资大PK
  13. MySQL中支持的字符集和排序规则
  14. wlan测试仪软件,MT8860C WLAN 测试仪
  15. H3c Smart-link 实验
  16. APP测试基本流程及APP测试要点
  17. [BJDCTF 2nd]假猪套天下第一
  18. CTF编码和加密总结
  19. 练习《learn Python3 the hard way》(Zed Shaw)ex25无法导入模块
  20. 群消息已读回执(这个屌),究竟是推还是拉?

热门文章

  1. 网络编程全解(Java)
  2. WARN com.atomikos.datasource.xa.XATransactionalResource - Error in recovery
  3. 微信开放平台绑定各移动应用、网站应用、公众号、小程序、第三方的个数
  4. isBlank与isEmpty的区别
  5. 毫秒和微秒分别和秒怎么换算?
  6. 一文详解IT运维大会精华 网络安全等保2.0时代掌控万物互联
  7. TS 如何解决已声明“XXX”,但从未读取其值
  8. 【复杂网络】社团划分结果评估指标:Q、ARI、NMI
  9. 软件系统复杂性灾难及解决方案探究
  10. python中text函数的语法_【01】Python基础语法