sqlzoo练习3

2021-03-02 16:31:33 浏览数 (1)

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.
代码语言:javascript复制
SELECT yr, subject, winner
  FROM nobel
 WHERE yr = 1950;
  1. Show who won the 1962 prize for Literature.
代码语言:javascript复制
SELECT winner
FROM nobel
WHERE yr = 1962
AND subject = 'Literature';
  1. Show the year and subject that won ‘Albert Einstein’ his prize.
代码语言:javascript复制
select yr, subject 
from nobel
where winner = 'Albert Einstein';
  1. Give the name of the ‘Peace’ winners since the year 2000, including 2000.
代码语言:javascript复制
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.
代码语言:javascript复制
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
代码语言:javascript复制
select * 
from nobel
where winner in ('Theodore Roosevelt','Woodrow Wilson','Jimmy Carter','Barack Obama');
  1. Show the winners with first name John
代码语言:javascript复制
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.
代码语言:javascript复制
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
代码语言:javascript复制
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)
代码语言:javascript复制
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

代码语言:javascript复制
select yr, subject, winner
from nobel
where winner like 'PETER%erg';  -- 使用通配符来解决
  1. Find all details of the prize won by EUGENE O’NEILL
代码语言:javascript复制
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.
代码语言:javascript复制
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,排在后面)
代码语言:javascript复制
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY subject IN ('Physics','Chemistry'),subject,winner
代码语言:javascript复制
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;

0 人点赞