Как вычесть зарплату, если работник не завершает месячные часы? - PullRequest
1 голос
/ 19 марта 2019

Ежемесячная заработная плата Работника составляет 50000, а общее рабочее время в месяце составляет 248, т. Е. 8 часа в день.Если работник работает менее чем 248 часов, то из его заработной платы должен быть вычтен, а если он / она заканчивает рабочее время, вычетов не должно быть.Я пробовал этот запрос, но он вычитает сумму, независимо от того, у сотрудника есть полное рабочее время.

SELECT 50000/248*248

Вывод, который я получаю, составляет 49848.Может быть, кто-то может помочь здесь.

Ответы [ 2 ]

3 голосов
/ 19 марта 2019

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

DECLARE @ActualHours decimal(5,2) = 248.00

SELECT CAST((50000/248.00) * @ActualHours as DECIMAL(7,2))

SET @ActualHours = 240

SELECT CAST((50000/248.00) * @ActualHours as DECIMAL(7,2))
2 голосов
/ 19 марта 2019

Деление в порядке, если вы хотите получить цену за час, но здесь вам нужно получить месячную зарплату, умноженную на процентную долю часов

SELECT 50000.00*248/248 вернет точное значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...