SELECT from nobel/ru
| Language: | English • русский |
|---|
| yr | subject | winner | ||
|---|---|---|---|---|
| 1960 | Chemistry | Willard F. Libby | ||
| 1960 | Literature | Saint-John Perse | ||
| 1960 | Medicine | Sir Frank Macfarlane Burnet | ||
| 1960 | Medicine | Peter Madawar | ||
| ... | ||||
nobel Нобелевские лауреаты
Мы продолжаем изучать простые SQL-запросы на одной таблице.
Этот урок посвящён таблице лауреатов Нобелевской премии:
nobel(yr, subject, winner)
где 'yr' – год, 'subject' – предмет номинации, 'winner' – имя победителя.
Using the SELECT statement.
Победители 1950 года
Измените запрос так, чтобы он отображал Нобелевские премии только за 1950 год.
SELECT yr, subject, winner
FROM nobel
WHERE yr = 1960
SELECT yr, subject, winner
FROM nobel
WHERE yr = 1950
1962 год, Литература
Выведите имена победителей премии 1962 года по литературе.
SELECT winner
FROM nobel
WHERE yr = 1960
AND subject = 'Physics'
SELECT winner
FROM nobel
WHERE yr = 1962
AND subject = 'Literature'
Альберт Эйнштейн
Выведите год и номинацию, в которой Альберт Эйнштейн получил Нобелевскую премию.
SELECT yr, subject
FROM nobel
WHERE winner = 'Albert Einstein'
Недавние лауреаты премии мира
Выведите имена лауреатов Нобелевской премии мира, начиная с 2000 года включительно.
SELECT winner
FROM nobel
WHERE subject = 'Peace'
AND yr >= 2000
Литература в 1980-е годы
Выведите все данные (yr, subject, winner) о лауреатах Нобелевской премии по литературе за период с 1980 по 1989 год включительно.
SELECT yr,subject,winner
FROM nobel
WHERE subject = 'Literature'
AND yr BETWEEN 1980 AND 1989
Только президенты
Выведите все данные о президентах-лауреатах:
- Theodore Roosevelt (Теодор Рузвельт)
- Thomas Woodrow Wilson (Томас Вудро Вильсон)
- Jimmy Carter (Джимми Картер)
- Barack Obama (Барак Обама)
SELECT * FROM nobel
WHERE yr = 1970
AND subject IN ('Cookery',
'Chemistry',
'Literature')
SELECT * FROM nobel
WHERE winner IN ('Theodore Roosevelt',
'Thomas Woodrow Wilson',
'Jimmy Carter',
'Barack Obama')
Джон
Выведите победителей по имени 'John'
SELECT winner FROM nobel
WHERE winner LIKE 'John %'
Химия и физика за разные годы
Выведите год, номинацию и имя лауреатов премии по физике за 1980 год вместе с лауреатами премии по химии за 1984 год.
SELECT *
FROM nobel
WHERE (subject='Physics' AND yr=1980) OR
(subject='Chemistry' AND yr=1984)
Кроме химии и медицины
Выведите год, номинацию и имя лауреатов за 1980 год, исключив химию и медицину.
SELECT *
FROM nobel
WHERE yr=1980 AND
subject NOT IN ('Chemistry','Medicine')
Ранние премии по медицине, поздние — по литературе
Выведите год, номинацию и имя лауреатов премии по медицине за ранние годы — до 1910 года, не включая 1910 год, — вместе с лауреатами премии по литературе за поздние годы — начиная с 2004 года включительно.
SELECT *
FROM nobel
WHERE (subject='Medicine' and yr <1910) OR
(subject='Literature' AND yr>=2004)
Задания посложнее
Умляут
Найдите все данные о премии, которую получил PETER GRÜNBERG.
SELECT *
FROM nobel
WHERE winner in ('Peter Grünberg')
Апостроф
Найдите все данные о премии, которую получил EUGENE O'NEILL
SELECT *
FROM nobel
WHERE winner in ('Eugene O''Neill')
Рыцари Её Величества
Рыцари по порядку
Выведите лауреатов, год и номинацию, где имя лауреата начинается с Sir. Сначала выведите самые последние записи, затем отсортируйте их по имени.
SELECT winner, yr, subject
FROM nobel
WHERE winner LIKE 'Sir%'
ORDER BY yr DESC, winner
Химия и физика — в конце
Выражение subject IN ('chemistry','physics') может использоваться как значение - оно будет равно 0 или 1.
Выведите лауреатов 1984 года и номинации, отсортировав их по номинации и имени лауреата, но химию и физику расположите в конце.
SELECT winner, subject, subject IN ('Physics','Chemistry')
FROM nobel
WHERE yr=1984
ORDER BY subject,winner
select winner, subject
from nobel
where yr=1984
order by
CASE WHEN subject in ('Physics','Chemistry') THEN 1 ELSE 0 END,
subject,winner