• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

правильно написать запрос исключив деление на ноль

  • Автор темы vanillavera
  • Дата начала
V

vanillavera

Всем здравствуйте!
подскажите, пожалуйста, кто знает, как правильно написать запрос?
нужно вывести поле наценка, как результат от деления (продажи-продажи в договорных ценах)/продажи в договорных ценах
проблема в том, что договорной цены может и не быть
как написать, чтобы в случае возникновения ошибки деления на ноль в поле выводился ноль?
изначально , скажем запрос такой

SELECT access.SUMPROD, access.SUMDOG, (SUMPROD-SUMDOG)/SUMDOG
FROM access access

теоретически понимаю, что здесь нужно использовать is null или case

но как? мои познания в SQL скудны и поверхностны
 
V

vital

SELECT access.SUMPROD, access.SUMDOG, (SUMPROD-SUMDOG)/SUMDOG
Это ж где такой дурной синтаксис придумали.. Вы там слово Limit или Where не пропустили?

Добавлено: пс. А что бы проверить на 0, проще if использовать.
 
V

vanillavera

Это ж где такой дурной синтаксис придумали.. Вы там слово Limit или Where не пропустили?

Добавлено: пс. А что бы проверить на 0, проще if использовать.


SELECT access.SUMPROD, access.SUMDOG,
case when isnull(SUMDOG;0)=0 then 0 else (SUMPROD-SUMDOG)/SUMDOG end
FROM access access


запрос пишу в MS Query
выдает
Не требовалось 'isnull' после списка столбцов в предложении SELECT
 
K

kds-service

SELECT access.SUMPROD, access.SUMDOG,
case when Coalesce( SUMDOG,0)=0 then 0
else (SUMPROD-SUMDOG)/SUMDOG end
FROM access access

Где то так, мог опечататься но не ошибиться..
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!