Операторы сравнения
Операторы сравнения — самый простой способ фильтровать данные в WHERE. Они сравнивают значение столбца с числом, текстом или другим столбцом.
В этом уроке работаем с таблицей tutorial.us_housing_units. Числа в таблице — тысячи домов.
Операторы для чисел
Заголовок раздела «Операторы для чисел»| Оператор | Значение |
|---|---|
= | равно |
<> или != | не равно |
> | больше |
< | меньше |
>= | больше или равно |
<= | меньше или равно |
Найдём месяцы, когда на западе построили больше 30 тысяч домов:
SELECT *FROM tutorial.us_housing_unitsWHERE west > 30;Запрос вернёт 278 строк. Замените > на другие операторы. Попробуйте другие числа. Так вы быстро почувствуете, как они работают.
Операторы для текста
Заголовок раздела «Операторы для текста»Сравнивать можно и текст. Текстовое значение пишут в одинарных кавычках:
SELECT *FROM tutorial.us_housing_unitsWHERE month_name = 'January';Операторы > и < для текста сравнивают значения по алфавиту. Точнее, по коду символов:
SELECT *FROM tutorial.us_housing_unitsWHERE month_name < 'O';Арифметика в SELECT
Заголовок раздела «Арифметика в SELECT»В SELECT можно считать. Доступны +, -, *, / и скобки:
SELECT year, month, west + south AS west_south_totalFROM tutorial.us_housing_units;Правила:
- арифметика работает по строкам: каждая строка считается отдельно;
- новому столбцу дайте имя через
AS; - порядок действий как в математике, скобки меняют его.
Арифметику можно использовать и в WHERE. Здесь сравниваем столбец с суммой двух других:
SELECT year, month, west, southFROM tutorial.us_housing_unitsWHERE west > south + 10;Практика
Заголовок раздела «Практика»Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.
Задание 1
Заголовок раздела «Задание 1»Выпускал ли регион West больше 50 тысяч домов за один месяц?
Проверка: 19 строк. Максимум в столбце west — 55.7.
Решение
SELECT *FROM tutorial.us_housing_unitsWHERE west > 50;Задание 2
Заголовок раздела «Задание 2»Выпускал ли регион South 20 тысяч домов или меньше за один месяц?
Проверка: 5 строк. Минимум в столбце south — 17.4.
Решение
SELECT *FROM tutorial.us_housing_unitsWHERE south <= 20;Задание 3
Заголовок раздела «Задание 3»Напишите запрос, который покажет только строки, где название месяца — February.
Проверка: 47 строк.
Решение
SELECT *FROM tutorial.us_housing_unitsWHERE month_name = 'February';Задание 4
Заголовок раздела «Задание 4»Напишите запрос, который покажет только строки, где month_name начинается с буквы N или с буквы, которая в алфавите раньше.
Проверка: 470 строк, 10 разных месяцев. Нет September и October.
Решение
SELECT *FROM tutorial.us_housing_unitsWHERE month_name < 'O';Задание 5
Заголовок раздела «Задание 5»Напишите запрос, который считает сумму всех четырёх регионов в отдельном столбце.
Проверка: 564 строки. В первой строке (январь 1968) сумма равна 80.5.
Решение
SELECT year, month, west, south, midwest, northeast, west + south + midwest + northeast AS usa_totalFROM tutorial.us_housing_units;Задание 6
Заголовок раздела «Задание 6»Напишите запрос, который вернёт все строки, где в регионе West построили больше домов, чем в Midwest и Northeast вместе.
Проверка: 104 строки.
Решение
SELECT year, month, west, south, midwest, northeastFROM tutorial.us_housing_unitsWHERE west > (midwest + northeast);Задание 7
Заголовок раздела «Задание 7»Напишите запрос, который считает, какой процент всех построенных домов США приходится на каждый регион. Верните только годы с 2000 и позже.
Подсказка: должно получиться четыре столбца с процентами.
Проверка: 180 строк. Для января 2000: west_pct = 24.45, south_pct = 52.36 (округление до сотых).
Решение
SELECT year, month, west / (west + south + midwest + northeast) * 100 AS west_pct, south / (west + south + midwest + northeast) * 100 AS south_pct, midwest / (west + south + midwest + northeast) * 100 AS midwest_pct, northeast / (west + south + midwest + northeast) * 100 AS northeast_pctFROM tutorial.us_housing_unitsWHERE year >= 2000;