sqlzoo select from nobel 题目及答案

  1. Change the query shown so that it displays Nobel prizes for 1950.
SELECT yr, subject, winner
FROM nobel
WHERE yr = 1950;
  1. Show who won the 1962 prize for Literature.
SELECT winner
FROM nobel
WHERE yr = 1962
AND subject = 'Literature';
  1. Show the year and subject that won ‘Albert Einstein’ his prize.
select yr, subject
from nobel
where winner = 'Albert Einstein';
  1. Give the name of the ‘Peace’ winners since the year 2000, including 2000.
select winner
from nobel
where subject = 'Peace' and yr >= 2000;
  1. Show all details (yr, subject, winner) of the Literature prize winners for 1980 to 1989 inclusive.
select *
from nobel
where yr >= 1980 and yr <= 1989 and subject = 'Literature';
  1. Show all details of the presidential winners:

    Theodore Roosevelt
    Woodrow Wilson
    Jimmy Carter
    Barack Obama

SELECT * 
FROM nobel
WHERE winner in (
'Theodore Roosevelt',
 'Woodrow Wilson',
 'Jimmy Carter',
 'Barack Obama');
  1. Show the winners with first name John
select winner
from nobel
where winner like 'John%';
  1. Show the year, subject, and name of Physics winners for 1980 together with the Chemistry winners for 1984.
select *
from nobel
where (subject = 'Physics' and yr = 1980) or (subject = 'Chemistry' and yr = 1984)
  1. Show the year, subject, and name of winners for 1980 excluding Chemistry and Medicine
select *
from nobel
where yr = 1980 and subject not in ('Chemistry', 'Medicine')
  1. Show year, subject, and name of people who won a ‘Medicine’ prize in an early year (before 1910, not including 1910) together with winners of a ‘Literature’ prize in a later year (after 2004, including 2004)
select *
from nobel 
where (subject = 'Medicine' and yr < 1910) or (subject = 'Literature' and yr >= 2004)
  1. Find all details of the prize won by PETER GRÜNBERG
select *
from nobel
where winner = 'PETER GRÜNBERG';
  1. Find all details of the prize won by EUGENE O’NEILL
select *
from nobel
where winner = 'EUGENE O\'NEILL';
  1. List the winners, year and subject where the winner starts with Sir. Show the the most recent first, then by name order.
select winner, yr, subject
from nobel
where winner like 'Sir%'
order by yr desc;
  1. 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 ('Physics','Chemistry'), 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、付费专栏及课程。

余额充值