Напомним потенциальные аномалии данных, которые нужно было обнаружить, в рамках бизнес-логики компании:
➖ Груз без указанной станции отправления или прибытия
➖ Рейс, где груз вылетает и прибывает на ту же станцию
➖ Отрицательные значения веса или расхода топлива
Верный ответ: B
```
SELECT * FROM shipments
WHERE (dep_station IS NULL OR arr_station IS NULL)
OR (dep_station = arr_station)
OR (weight < 0 OR fuel < 0);
```
➖ Проверяет пустые станции отправления/прибытия
➖ Проверяет одинаковые станции отправления и прибытия
➖ Проверяет отрицательный вес и расход топлива
Разберём остальные ответы:
A)
```
SELECT * FROM shipments
WHERE dep_station IS NULL
OR arr_station IS NULL
OR weight < 0
OR fuel < 0;
```
Не проверяет рейсы, где станция отправления = станция прибытия.
C)
```
SELECT * FROM shipments
WHERE (weight < 0 OR fuel < 0)
OR (COALESCE(dep_station,'') = '' OR COALESCE(arr_station,'') = '');
```
Проверяет только пустые станции и отрицательные значения, не проверяет рейсы с одинаковыми станциями.
D)
```
SELECT * FROM shipments
WHERE dep_station = arr_station
OR dep_station IS NULL
OR arr_station IS NULL;
```
Проверяет пустые станции и одинаковые станции, но не отрицательный вес и расход топлива.
В аналитике данных важно ловить не только явные ошибки вроде NULL или отрицательных чисел, но и тонкие логические аномалии, которые могут скрываться за нормальными на первый взгляд значениями.
В нашем примере был рейс с одинаковой станцией отправления и прибытия — вроде бы данные есть, но по бизнес-логике это ошибка. Правильный SQL-запрос на проверку данных как детектор аномалий: он выявляет все подозрительные случаи сразу, экономит время и помогает не пропустить важные нюансы.
Подробнее про проверки мы поговорим в рамках SQL-буткемпа — регистрируйтесь, до конца сентября держим ранние цены!
🔔 Зарегистрироваться на тренинг по SQL
📊 Simulative