Операторы сравнения
Кроме =, в SQL есть ещё пять операторов сравнения:
| Оператор | Значение | Пример |
|---|---|---|
| = | равно | price = 30 |
| <> или != | не равно | price <> 30 |
| < | меньше | price < 30 |
| > | больше | price > 30 |
| <= | меньше или равно | price <= 30 |
| >= | больше или равно | price >= 30 |
<> и != означают одно и то же. <> — из стандарта SQL, его знают все базы данных; != вы, возможно, знаете по другим языкам программирования. В этом курсе используется <>.
Следите за границей. «Дешевле $15» — это price < 15, и игр, которые стоят ровно $15, в результате нет:
SELECT title, price
FROM games
WHERE price < 15
ORDER BY price;| title | price |
|---|---|
| Cube Logic | 5 |
| Word Quest | 10 |
«Не дороже $15» — это price <= 15, и три игры за $15 в результат тоже попадают:
SELECT title, price
FROM games
WHERE price <= 15
ORDER BY price, title;| title | price |
|---|---|
| Cube Logic | 5 |
| Word Quest | 10 |
| Bakery Story | 15 |
| Ocean Deep | 15 |
| Pixel Racer | 15 |
Любая сторона сравнения может быть и вычислением. У покупателя $50, и он хочет купить две копии одной игры, одну — в подарок другу. Игры, две копии которых стоят не больше $50, сначала самые дорогие:
SELECT title, price * 2 AS two_copies
FROM games
WHERE price * 2 <= 50
ORDER BY price DESC, title;| title | two_copies |
|---|---|
| Mystery Manor | 50 |
| Shadow Ninja | 50 |
| Tiny Kingdoms | 50 |
| … | … |
Типичная ошибка: знаки в обратном порядке, => вместо >=. WHERE price => 40 заканчивается ошибкой:
Error on line 1: near ">": syntax errorЗнак равенства всегда идёт вторым, в том же порядке, в каком вы говорите: «больше или равно».
Задание
- 1
Покажите название и цену игр, которые стоят $40 и больше, сначала самые дорогие. Игры с одинаковой ценой отсортируйте по названию:
title price Knight's Oath 60 Goal Rush 50 Ice Hockey Pro 45 Dragon Forge 40 Robot Rebellion 40 - 2
Ниже покажите название и возрастной рейтинг игр, которые подходят не с 3 лет (их
age_ratingне равен 3). Отсортируйте их по возрастному рейтингу, от меньшего, а затем по названию:title age_rating Ocean Deep 7 Tiny Kingdoms 7 Word Quest 7 Castle Siege 12 … … - 3
А для бухгалтерии: покажите позиции заказов, за которые покупатель заплатил в сумме больше $50, то есть те, у которых
quantity * priceбольше 50. Покажите столбцыorder_idиgame_idи сумму под именемtotal, отсортировав поorder_id:order_id game_id total 22 14 60 26 15 60 27 15 60 29 15 60