Перейти к содержимому
TelegramGitHub

Операторы сравнения

Операторы сравнения — самый простой способ фильтровать данные в WHERE. Они сравнивают значение столбца с числом, текстом или другим столбцом.

В этом уроке работаем с таблицей tutorial.us_housing_units. Числа в таблице — тысячи домов.

ОператорЗначение
=равно
<> или !=не равно
>больше
<меньше
>=больше или равно
<=меньше или равно

Найдём месяцы, когда на западе построили больше 30 тысяч домов:

SELECT *
FROM tutorial.us_housing_units
WHERE west > 30;

Запрос вернёт 278 строк. Замените > на другие операторы. Попробуйте другие числа. Так вы быстро почувствуете, как они работают.

Сравнивать можно и текст. Текстовое значение пишут в одинарных кавычках:

SELECT *
FROM tutorial.us_housing_units
WHERE month_name = 'January';

Операторы > и < для текста сравнивают значения по алфавиту. Точнее, по коду символов:

SELECT *
FROM tutorial.us_housing_units
WHERE month_name < 'O';

В SELECT можно считать. Доступны +, -, *, / и скобки:

SELECT year,
month,
west + south AS west_south_total
FROM tutorial.us_housing_units;

Правила:

  • арифметика работает по строкам: каждая строка считается отдельно;
  • новому столбцу дайте имя через AS;
  • порядок действий как в математике, скобки меняют его.

Арифметику можно использовать и в WHERE. Здесь сравниваем столбец с суммой двух других:

SELECT year,
month,
west,
south
FROM tutorial.us_housing_units
WHERE west > south + 10;

Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.

Выпускал ли регион West больше 50 тысяч домов за один месяц?

Проверка: 19 строк. Максимум в столбце west — 55.7.

Решение
SELECT *
FROM tutorial.us_housing_units
WHERE west > 50;

Выпускал ли регион South 20 тысяч домов или меньше за один месяц?

Проверка: 5 строк. Минимум в столбце south — 17.4.

Решение
SELECT *
FROM tutorial.us_housing_units
WHERE south <= 20;

Напишите запрос, который покажет только строки, где название месяца — February.

Проверка: 47 строк.

Решение
SELECT *
FROM tutorial.us_housing_units
WHERE month_name = 'February';

Напишите запрос, который покажет только строки, где month_name начинается с буквы N или с буквы, которая в алфавите раньше.

Проверка: 470 строк, 10 разных месяцев. Нет September и October.

Решение
SELECT *
FROM tutorial.us_housing_units
WHERE month_name < 'O';

Напишите запрос, который считает сумму всех четырёх регионов в отдельном столбце.

Проверка: 564 строки. В первой строке (январь 1968) сумма равна 80.5.

Решение
SELECT year,
month,
west,
south,
midwest,
northeast,
west + south + midwest + northeast AS usa_total
FROM tutorial.us_housing_units;

Напишите запрос, который вернёт все строки, где в регионе West построили больше домов, чем в Midwest и Northeast вместе.

Проверка: 104 строки.

Решение
SELECT year,
month,
west,
south,
midwest,
northeast
FROM tutorial.us_housing_units
WHERE west > (midwest + northeast);

Напишите запрос, который считает, какой процент всех построенных домов США приходится на каждый регион. Верните только годы с 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_pct
FROM tutorial.us_housing_units
WHERE year >= 2000;