CREATE TABLE #empInfo(emp_id INT, dept_id INT, salary INT)
CREATE TABLE #empBonus(dep_id INT, emp_id INT, bonus INT)
我有以上兩代表爲Employee
和Bonus
,在這裏我將分配獎金每年獎金錶中的員工,但例如我們要做到這一點,每年只要所以沒有給出年份列。按比例分配獎金分配使用設置表
INSERT INTO #empInfo VALUES
(111, 100, 5000),
(112, 100, 4000),
(113, 100, 4000),
(114, 100, 3500),
(115, 100, 4500),
(116, 100, 3000),
(114, 200, 3500),
(115, 200, 4500),
(116, 200, 3000),
(114, 300, 3500),
(115, 300, 3500),
(116, 300, 3500)
INSERT INTO #empBonus VALUES
(100, 111, 1000),
(100, NULL, 4000),
(100, 111, 500),
(100, NULL, 4000),
(100, 113, 700),
(200, 114, 600),
(200, NULL, 1600),
(300, 116, 900)
以上,如果empBonus
表中定義的員工ID,然後在獎金分配應該爲員工,如果無效,這意味着獎金,其不是在empBonus
列出,並會根據自己的工資獲得獎勵所有員工。
我們可以爲多名員工定義獎金,對於同一名員工可以是多個獎金,在這種情況下,我們必須總計獎金並相應地執行操作。同樣的情況是NULL。
例如,立足以下的公式,我在下面做計算在EXCEL
,便於理解和SQL
我與OUTER APPLY
努力,但沒有得到什麼,我從單個查詢想要的嗎?
--Formula = bonus*salary/totSalary(of respective group or employee)
DeptID EmpID TotBonus Salary TotSalary Bonus
100 111 1500 5000 5000 1500.00000000000
100 112 8000 4000 15000 2133.33333333333
100 113 700 4000 4000 700.00000000000
100 114 8000 3500 15000 1866.66666666666
100 115 8000 4500 15000 2400.00000000000
100 116 8000 3000 15000 1600.00000000000
200 114 600 3500 3500 600.00000000000
200 115 1600 4500 7500 960.00000000000
200 116 1600 3000 7500 640.00000000000
300 114 0 3500 7000 0.00000000000
300 115 0 3500 7000 0.00000000000
300 116 900 3500 3500 900.00000000000
任何幫助將不勝感激,謝謝提前:)
你是怎麼'TotSalary'? – Wanderer
爲'111'員工定義了獎金,因此'111'的總工資爲'5000',對於其他組合獎金則定義爲總薪水爲所有這些員工薪水的總和。即上例中的「19000」。我們也可以通過另一種方法。 – Susang
您可以請您分享您在Excel中完成的獎金分配公式嗎? – Abhay