Oracle中的任何内置函数,用于舍入数字并随机分配剩余值

时间:2016-08-31 03:42:57

标签: sql oracle

我有一张表说STAFF存储员工姓名和工资。 以下是一些示例数据:

STAFF        | SALARY
===========================
ALEX         | 100.4
JESSICA      | 100.4
PETER        | 99.2

工资总额总是一个整数,我想将所有员工的工资四舍五入,然后随机将剩余价值存入其中一个。

例如,如果选择JESSICA来接收剩余值,则输出如下所示。

STAFF        | SALARY
===========================
ALEX         | 100
JESSICA      | 101
PETER        | 99

Oracle是否提供任何内置函数来执行所描述的操作。

2 个答案:

答案 0 :(得分:1)

数量 print(snapshot.value) if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { for snap in snapshots { let name = snap.key let uid = snap.value as! String let person = Person(name: name, bio: "", UID: uid) if person.UID != self.currentUser { self.pageTitles.append(uid) } } self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController self.pageViewController.dataSource = self let startVC = self.viewControllerAtIndex(0) as ContentViewController let viewControllers = NSArray(object: startVC) self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: true, completion: nil) self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height - 60) self.addChildViewController(self.pageViewController) self.view.addSubview(self.pageViewController.view) self.pageViewController.didMoveToParentViewController(self) } 应该为每条记录提供每个薪水的小数部分。您可以对整个表格求和,然后增加某个用户的工资,但这个数额。尝试这样的事情:

SALARY - TRUNC(SALARY)

答案 1 :(得分:0)

这里我尝试了一个根据生成的随机数给出随机结果的东西。

 with mine(STAFF,salary,status) as
  (
    select 'ALEX',100.4,'Y' from dual union all
    select 'JESSICA',100.4,'Y' from dual union all
    select 'PETER',99.2,'Y' from dual union all
    select 'randomno',floor(dbms_random.value(1,4)),'N' vno from dual
  )
  select STAFF,decode(rndno,rno,csalary,rsalary) salary,decode(rndno,rno,'selected to receive the remaining value',null) selected from(
  select rownum rno,STAFF,salary,round(salary) rsalary,ceil(salary) csalary,
  (select salary from mine where status='N') rndno
   from mine where status='Y'
);

这里每次运行查询时都会选择具有浮动工资的新用户。 在上面的查询中,我添加了一个提供随机数的其他行,并与acual结果行进行比较。