SQLZOO答案-SELECT from Nobel Tutorial

博客围绕诺贝尔奖数据,给出一系列SQL查询需求,如查询特定年份、奖项的获奖者信息,包括1950年奖项资料、1962年文学奖得主等,还涉及特定人物如爱因斯坦、总统获奖者等的获奖情况查询,以及对结果排序等操作。

 

1.更改查詢以顯示1950年諾貝爾獎的獎項資料。

SELECT yr, subject, winner
  FROM nobel
 WHERE yr = 1950

 

2.顯示誰贏得了1962年文學獎(Literature)。

SELECT winner
  FROM nobel
 WHERE yr = 1962
   AND subject = 'Literature'

 

3.顯示“愛因斯坦”('Albert Einstein') 的獲獎年份和獎項。
 

SELECT yr, subject 
  FROM nobel
WHERE winner = 'Albert Einstein'

 

4.顯示2000年及以後的和平獎(‘Peace’)得獎者。

SELECT winner 
  FROM nobel
WHERE yr >= 2000 AND subject = 'Peace';

 

5.顯示1980年至1989年(包含首尾)的文學獎(Literature)獲獎者所有細節(年,主題,獲獎者)。

SELECT yr, subject, winner 
  FROM nobel
WHERE subject = 'Literature' AND yr >= 1980 AND yr <= 1989
ORDER BY yr;

 

6.顯示總統獲勝者的所有細節:

  • 西奧多•羅斯福 Theodore Roosevelt
  • 伍德羅•威爾遜 Woodrow Wilson
  • 吉米•卡特 Jimmy Carter
SELECT * FROM nobel
 WHERE  winner IN ('Theodore Roosevelt',
                  'Woodrow Wilson',
                  'Jimmy Carter')

 

7.顯示名字為John 的得獎者。 (注意:外國人名字(First name)在前,姓氏(Last name)在後)

SELECT winner 
  FROM nobel
WHERE winner LIKE 'John%';

 

8.顯示1980年物理學(physics)獲獎者,及1984年化學獎(chemistry)獲得者。

SELECT yr, subject, winner 
  FROM nobel
WHERE yr = 1980 AND subject = 'physics' 
  OR (yr = 1984 AND subject = 'chemistry' );

9.查看1980年獲獎者,但不包括化學獎(Chemistry)和醫學獎(Medicine)。

SELECT yr, subject, winner 
  FROM nobel
WHERE yr= 1980 
  AND subject NOT IN('Chemistry', 'Medicine');

 

10.顯示早期的醫學獎(Medicine)得獎者(1910之前,不包括1910),及近年文學獎(Literature)得獎者(2004年以後,包括2004年)。

SELECT *
  FROM nobel
WHERE subject = 'Medicine' AND yr < 1910
  OR subject = 'Literature' AND yr >= 2004;

11.Find all details of the prize won by PETER GRÜNBERG

SELECT *
 FROM nobel
WHERE winner = 'PETER GRÜNBERG';

 

12.查找尤金•奧尼爾EUGENE O'NEILL得獎的所有細節 Find all details of the prize won by EUGENE O'NEILL

SELECT *
 FROM nobel
WHERE winner = 'EUGENE O''NEILL';

注:字符串中的单引号需用两个

 

13.騎士列隊 Knights in order

列出爵士的獲獎者、年份、獎頁(爵士的名字以Sir開始)。先顯示最新獲獎者,然後同年再按名稱順序排列。

SELECT winner, yr, subject 
  FROM nobel
WHERE winner LIKE 'Sir%'
ORDER BY yr desc, winner

 

14.The expression subject IN ('Chemistry','Physics') can be used as a value - it will be 0 or 1.

Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.

SELECT winner, subject 
  FROM nobel
WHERE yr = 1984
ORDER BY subject IN ( 'Chemistry', 'Physics'), subject, winner ;

 

### SQLZoo 学习指南 SQL 是一种强大的数据库查询语言,广泛应用于数据管理和分析领域。为了帮助用户更高效地掌握 SQL 技能,以下是关于 **SQLZoo** 的一些核心练习及其解答。 #### 基础查询 基础部分涵盖了简单的 `SELECT` 查询语句以及如何操作单表中的数据。例如: ```sql -- 列出所有诺贝尔获奖者年份、学科和姓名。 SELECT yr, subject, winner FROM nobel; ``` 通过这些基本查询可以熟悉 SQL 中的关键字语法[^4]。 --- #### 连接多个表格 当涉及多张表的数据关联时,通常会用到 `JOIN` 操作符。以下是一个典型的例子: ```sql -- 统计每个场馆的比赛进球数。 SELECT stadium, COUNT(player) FROM goal JOIN game ON (matchid = id) GROUP BY stadium; ``` 此代码片段展示了如何利用连接条件 `(matchid = id)` 将两张表结合起来并按特定字段分组统计结果[^3]。 --- #### 处理复杂关系 对于更加复杂的场景,可能还需要考虑右外联结 (`RIGHT JOIN`) 或其他类型的联结方式来确保不会遗漏任何一方的信息。比如下面这个案例说明了即使某些部门暂时没有任何教师也依然会被显示出来的情况: ```sql -- 显示各部门名称及对应教师数量(包括无教师的部门)。 SELECT dept.name, COUNT(teacher.dept) FROM teacher RIGHT JOIN dept ON (dept.id = teacher.dept) GROUP BY dept.name; ``` 这里采用了右侧外部联合使得即便存在未分配人员的系也能正常呈现其基本信息[^2]。 --- #### 高级功能探索 随着技能水平提高还可以尝试更多高级特性如窗口函数、子查询等进一步挖掘隐藏价值所在之处。而这一切都可以从官方教程面找到详尽指导材料链接如下所示: [https://sqlzoo.net/wiki/SQL_Tutorial](https://sqlzoo.net/wiki/SQL_Tutorial)[^1] --- ### 总结 综上所述,无论是初学者还是希望巩固已有知识体系的人都可以从 SqlZoo 提供的各种练习题目当中受益匪浅。它不仅提供了理论讲解还配有实际动手实践机会从而让整个学习过程变得更加生动有趣起来!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值