[英]Oracle Sql with subqueries
我正在使用相同的斯科特模式。问题像这样。 用描述性标签显示雇员,雇员,TA,DA,HRA,总津贴,保险,TDS,净扣除额,净额。
这里Ta是工资的30%,DA是工资的40%,hra是工资的50%,保险是5%sal,tds是5%sal。 总免税额为ta + da + hra。 总扣除额是ins + tds现在的净额是(sal +津贴-总扣除额)
我正在尝试使用with语句来实现
WITH T1 AS
(SELECT (30 / 100 * SAL) AS TA FROM EMP),
T2 AS
(SELECT (40 / 100 * SAL) AS DA FROM EMP),
T3 AS
(SELECT (50 / 100 * SAL) AS HRA FROM EMP)
SELECT Empno, TA, DA, HRA, (ta + da + hra)
FROM EMP, T1, T2, T3
group by empno;
这样的事情。逻辑是错误的,我可以理解。
只需在单个查询中执行此操作:
select e.*, (ta + da + hra) as total_allowances,
(sal + (ta + da + hra) - (ins + tds)) as net_salary
from (select empno, (sal * 30/100) as ta, (sal * 40/100) as da,
(sal * 50/100) as hra,
(sal * 0.05) as ins,
(sal * 0.05) as tds
from emp
) e;
我不知道该group by
是什么。 您没有聚合函数,并且具有像emp
这样的表名,我希望每一行都有empno
的唯一值。
select empno,
sal,
.3 * sal as ta,
.4 * sal as da,
.5 * sal as hra,
.05 * sal as insurance,
.05 * sal as tds,
(.3 * sal) + (.4 * sal) + (.5 * sal) as total_allowances,
(.05 * sal) + (.05 * sal) as total_deductions,
sal + ((.3 * sal) + (.4 * sal) + (.5 * sal)) - ((.05 * sal) + (.05 * sal)) as netsal
from emp
我不知道您要如何实现WITH子句。 您的t1 / t2查询将在整个表中分别执行每个计算。 您可以在同一查询中进行每个计算。 而且似乎没有涉及多个表,因此您不需要任何连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.