Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 14.02.2017
Сообщений: 220

Условные операторы

06.02.2020, 22:01. Показов 1036. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется таблица employees сотрудников (id, salary, hire_date) (айди, зарплата, дата найма). Нужно увеличить зарплату сотруднику с id = 7, при условии: если стаж работы больше 4 лет, увеличить зарплату на 40%, если меньше 4, то увеличить на 20%. Как посчитать стаж работы? Помогите пжлста с запросом! СПАСИБО!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2020, 22:01
Ответы с готовыми решениями:

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

Условные операторы и операторы цикла: найти в массиве два наименьших элемента
ЗАДАНИЕ: Дан целочисленный массив A . Найти в нём два наименьших элемента. МОЯ ПРОГРАММА: #include <iostream> #include...

Условные операторы и операторы цикла, проверка корректности вводимых данных
Привет, ребята. Помогите, пожалуйста, написать код для данной задачи. Примечание: необходимо использовать условные операторы и операторы...

8
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
06.02.2020, 22:10
Вот так
SQL
1
2
3
4
5
UPDATE employees
   SET salary = salary * CASE WHEN months_between(sysdate, hire_date) >= 48 THEN 1.4
                           ELSE 1.2
                         END
 WHERE id = 7
1
2 / 2 / 0
Регистрация: 14.02.2017
Сообщений: 220
06.02.2020, 22:15  [ТС]
mibin, спасибо большое!!! А можно разницу через года посчитать?
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
06.02.2020, 22:19
Можно

SQL
1
2
3
4
5
UPDATE employees
   SET salary = salary * CASE WHEN months_between(sysdate, hire_date)/12 >= 4 THEN 1.4
                           ELSE 1.2
                         END
 WHERE id = 7
1
2 / 2 / 0
Регистрация: 14.02.2017
Сообщений: 220
06.02.2020, 22:32  [ТС]
mibin, извини пожалуйста, там просто условие добавляется что "если стаж работы больше 4 но меньше 9, то увеличиваем на 40%, а иначе (т.е. все что больше 9) увеличиваем на 80%". Здесь тогда через if-then-else?
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
06.02.2020, 22:36
Да всё так же, через case, if в запросе использовать нельзя.

Вот конструкция case
SQL
1
2
3
4
CASE WHEN VALUE > 1 AND VALUE < 2 THEN 1
        WHEN VALUE = 3 THEN 2
  ELSE 3
END
и ещё не понятно, а что делать с тем у кого меньше 4х лет или это дополнительное условие к задаче выше?
0
2 / 2 / 0
Регистрация: 14.02.2017
Сообщений: 220
06.02.2020, 22:42  [ТС]
Цитата Сообщение от mibin Посмотреть сообщение
а что делать с тем у кого меньше 4х лет
нет-нет не доп условие, там просто на 20% увеличиваем.
Цитата Сообщение от mibin Посмотреть сообщение
Да всё так же, через case, if в запросе использовать нельзя
а, хорошо, понял, спасибо еще раз!!!
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
06.02.2020, 22:46
Но надо учитывать что в oracle используется троичная логика а не двоичная, т.е. если выполнить вот такой запрос (без ELSE):
SQL
1
2
3
UPDATE employees
   SET salary = salary * CASE WHEN months_between(sysdate, hire_date)/12 >= 4 THEN 1.4 END
 WHERE id = 7
, и человек работал меньше 4х лет, то его salary станет NULL, если нужно чтобы оно не изменилось нужно написать в case "ELSE 1".

Вообще про троичную логику oracle лучше почитать, чтобы понять о чём я.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
11.02.2020, 14:34
SQL
1
2
3
4
SELECT hire_date, 
       (abs(sign(EXTRACT(YEAR FROM sysdate) - EXTRACT(YEAR FROM hire_date) - 4)) +
       sign((EXTRACT(YEAR FROM sysdate) - EXTRACT(YEAR FROM hire_date) - 4))) / 2 * .2 + .2 multi
  FROM hr.employees
можно и без условных операторов обойтись в таком случае
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2020, 14:34
Помогаю со студенческими работами здесь

Найти число положительных и отрицательных элементов вектора,не используя операторы цикла и условные операторы
найти число положительных и отрицательных элементов вектора,не используя операторы цикла и условные операторы

«Языки и технологии программирования» «Операторы цикла. Условные операторы»
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно. условия | ((z^3)+sin...

Условные операторы ,Оператор выбора ,Операторы цикла
Helpp =)) 1) На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к...

Условные операторы и операторы цикла
Помогите, пожалуйста, решить задачу. Даны три действительных числа. Вывести на экран те из них, которые принадлежат интервалу (1, 3).

Условные операторы Операторы выбора
Значення змінних х, у, Z поміняти місцями так, щоб вони опинилися впорядкованими за спаданням. Одиниці маси пронумеровані наступним...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru