Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики. Максим Михайлович Чалышев
rel="nofollow" href="#image120_5c5be01a47a2381d1b830a68_jpg.jpeg"/>
Рисунок 40. Запрос: марки, цвета авто, только уникальные записи
Важные замечания
Важно отметить, что дубли исключаются DISTINCT только из колонок, перечисленных в SELECT; других колонок DISTINCT не касается.
С помощью DISTINCT очень удобно просмотреть, какие вообще значения есть в заданной колонке, например автомобили каких цветов присутствуют в таблице AUTO:
SELECT DISTINCT COLOR FROM AUTO
Вопросы учеников
Есть ли еще какой-либо способ исключить дубли из запроса?
Да, подобный способ называется группировка записей, и мы изучим его позже.
Можно ли использовать DISTINCT с ROWNUM?
Да, но тогда оператор DISTINCT бесполезен, его использование потеряет смысл.
Можно ли использовать DISTINCT с WHERE?
Конечно, это возможно, нет никаких ограничений, и вот пример такого запроса.
Выведите из таблицы AUTO автомобили марки LADA уникальных цветов.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Выведите из таблицы AUTO цвета автомобилей, исключите повторения, напишите SQL-запрос.
3. Выведите из таблицы MAN имена людей, исключите повторения, напишите SQL-запрос.
День пятый
Шаг 21. Математика в запросах
Введение
Мы уже использовали математику в SQL-командах ранее: вспомните, в одном из примеров использования UPDATE мы добавляли год к возрасту человека из MAN.
Так вот, в запросах SQL мы можем использовать результаты математических вычислений, причем мы можем как выводить результаты математических вычислений в колонках выбора SELЕCT, так и использовать математические выражения при формировании условий отбора строк WHERE.
Теория и практика
Для создания математических выражений в языке SQL используются следующие операции:
+ сложение;
– вычитание;
/ деление;
* умножение.
А также знакомые нам со школы функции:
Sqrt – квадратный корень;
MOD – остаток от деления;
trunc – округление до целого;
sIN – синус;
cos – косинус
(на самом деле этих функций больше, мы рассматриваем основные).
Все математические операции выполняются только для числовых значений, числовых колонок с типами NUMBER или производными от NUMBER (INt, float) – более подробную информацию можно посмотреть в документации к СУБД. То есть мы можем использовать в математических выражениях значения соответствующих колонок при выводе на экран и в фильтре WHERE.
Запомним, что математические операции используются также в критериях отбора строк WHERE.
Посмотрим, как это делается.
Вывести из таблицы MAN имя, фамилию и возраст (FIRSTNAME, LASTNAME, YEAROLD) человека, разделенный на 10.
Рисунок 41. Запрос к MAN: результат математического вычисления
В колонке с псевдонимом y10 выводится результат выражения YEAROLD/10.
Вывести из таблицы MAN имя, фамилию и возраст человека (FIRSTNAME, LASTNAME, YEAROLD), умноженный на sIN (1), округлить до целого.