Fork me on GitHub

sqlzoo练习3

Sqlzoo 练习3

We continue practicing simple SQL queries on a single table.This tutorial is concerned with a table of Nobel prize winners:

select子句顺序

  1. select
  2. from
  3. where
  4. group by
  5. having
  6. order by(desc是降序)

练习

  1. Change the query shown so that it displays Nobel prizes for 1950.
1
2
3
SELECT yr, subject, winner
FROM nobel
WHERE yr = 1950;
  1. Show who won the 1962 prize for Literature.
1
2
3
4
SELECT winner
FROM nobel
WHERE yr = 1962
AND subject = 'Literature';
  1. Show the year and subject that won ‘Albert Einstein’ his prize.
1
2
3
select yr, subject 
from nobel
where winner = 'Albert Einstein';
  1. Give the name of the ‘Peace’ winners since the year 2000, including 2000.
1
2
3
4
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.
1
2
3
4
select yr, subject, winner 
from nobel
where subject='Literature'
and (yr between 1980 and 1989);
  1. Show all details of the presidential winners:Theodore Roosevelt、Woodrow Wilson、Jimmy Carter、Barack Obama
1
2
3
select * 
from nobel
where winner in ('Theodore Roosevelt','Woodrow Wilson','Jimmy Carter','Barack Obama');
  1. Show the winners with first name John
1
2
3
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.
1
2
3
4
select yr, subject, winner 
from nobel
where (yr = 1980 and subject = 'Physics')
or (yr = 1984 and subject = 'Chemistry');
  1. Show the year, subject, and name of winners for 1980 excluding Chemistry and Medicine
1
2
3
4
select yr, subject, winner
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)
1
2
3
4
select yr, subject, winner
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

1
2
3
select yr, subject, winner
from nobel
where winner like 'PETER%erg'; -- 使用通配符来解决
  1. Find all details of the prize won by EUGENE O’NEILL
1
2
3
select yr, subject, winner
from nobel
where winner like 'EU%ILL'
  1. List the winners, year and subject where the winner starts with Sir. Show the the most recent first, then by name order.
1
2
3
4
select winner,yr, subject
from nobel
where winner like 'Sir%'
order by yr desc, winner asc; -- 指定时间的降序,名字的升序
  1. The expression subject IN (‘Chemistry’,‘Physics’) can be used as a value - it will be 0 or 1:满足条件是1,否则是0

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

  • 1984年获奖
  • 学科与名字排序
  • 化学和物理最后排序(满足条件为1,排在后面)
1
2
3
4
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY subject IN ('Physics','Chemistry'),subject,winner
1
2
3
4
5
6
select winner, subject
from nobel
where yr=1984
order by
case when subject in ('Physics','Chemistry') then 1 else 0 end, -- 满足when语句为1,否则是0
subject, winner;

本文标题:sqlzoo练习3

发布时间:2020年01月13日 - 17:01

原始链接:http://www.renpeter.cn/2020/01/13/sqlzoo%E7%BB%83%E4%B9%A03.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea