Select 乘以计数 SQL、Group By、Oracle
Select multiplication by count SQL, Group By, Oracle
我有这个 tables....
TableHead tblHead
- Date schedule
- Number idCode
Date idCode
2018/05/12 10007
2018/05/15 10008
2018/09/18 19892
2018/11/20 19897
2018/05/15 23404
TableDetail tblDetail
- Number headCode
- Varchar2 superService
headCode superService
10007 S67900
10008 S89333
10008 S89335
19892 A45899
19892 P41899
19897 A89320
23404 S89333
23404 P41899
TableInternal
- Varchar2 superService
- Varchar2 nameService
- Number(15,2) quantity
superService nameService quantity
S89333 1000045677 2.1
S89335 3002344444 0.7
P41899 1000045677 5.6
P41899 2000045679 4.3
TableHead
table 有一个日期字段,TableDetail
有一个外键到它的idCode
。
现在 TableDetail
有一个名为 superService
的服务字段,就像一个包。
包由 TableInternal
table 描述,带有 quantity
字段,并包含 nameService
字段。
换句话说...superService
字段包含 quantity
次 nameService
我想获取示例findByDate=2018/05/15
,那么必须处理来自TableHead
的代码10008
和23404
.
现在,1008
代码有S89333
和S89335
,23404
有S89333
和P41899
。
恢复,我需要处理两次S89333
和一次S89335
和P41899
现在,详细服务...
nameService schedule Total
1000045677 2018/05/15 2*2.1 + 5.6
3002344444 2018/05/15 0.7
2000045679 2018/05/15 4.3
我的查询是错误的...但是,我不知道该怎么做,
SELECT
tblInt.nameService, TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')), COUNT (*) subTotal
FROM TableDetail tblDetail, TableHead tblHead, TableInternal tblInt
WHERE tblHead.idCode = tblDetail.headCode
AND tblDetail.superService = tblInt.superService
AND TO_CHAR(tblHead.schedule,'dd/MM/yy') =:findByDate
GROUP BY
tblInt.nameService, TO_CHAR(tblHead.schedule,'dd/MM/yy')
ORDER BY TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')) DESC;
现在我想在同一个查询中获取一个值为 subTotal * tblInt.quantity
的 Total
字段。
但是,我不知道该怎么做。
我的问题
如何将计数乘以另一个数字字段(使用分组依据)?
如果我没有弄错任何东西,你只需要把所有的东西加在一起,分组,你就得到了你的总和。您不需要乘以计数,因为这是隐式完成的。相应(超级?)服务(我没有得到实体)的行在未分组的集中出现两次。当然还有 2.1 + 2.1 = 2 * 2.1.
SELECT i.nameservice,
h.schedule,
sum(i.quantity) total
FROM tablehead h
INNER JOIN tabledetail d
ON d.headcode = h.idcode
INNER JOIN tableinternal i
ON i.superservice = d.superservice
WHERE h.schedule = to_date('2018-05-15', 'YYYY-MM-DD')
GROUP BY i.nameservice,
h.schedule;
我有这个 tables....
TableHead tblHead
- Date schedule
- Number idCode
Date idCode
2018/05/12 10007
2018/05/15 10008
2018/09/18 19892
2018/11/20 19897
2018/05/15 23404
TableDetail tblDetail
- Number headCode
- Varchar2 superService
headCode superService
10007 S67900
10008 S89333
10008 S89335
19892 A45899
19892 P41899
19897 A89320
23404 S89333
23404 P41899
TableInternal
- Varchar2 superService
- Varchar2 nameService
- Number(15,2) quantity
superService nameService quantity
S89333 1000045677 2.1
S89335 3002344444 0.7
P41899 1000045677 5.6
P41899 2000045679 4.3
TableHead
table 有一个日期字段,TableDetail
有一个外键到它的idCode
。
现在 TableDetail
有一个名为 superService
的服务字段,就像一个包。
包由 TableInternal
table 描述,带有 quantity
字段,并包含 nameService
字段。
换句话说...superService
字段包含 quantity
次 nameService
我想获取示例findByDate=2018/05/15
,那么必须处理来自TableHead
的代码10008
和23404
.
现在,1008
代码有S89333
和S89335
,23404
有S89333
和P41899
。
恢复,我需要处理两次S89333
和一次S89335
和P41899
现在,详细服务...
nameService schedule Total
1000045677 2018/05/15 2*2.1 + 5.6
3002344444 2018/05/15 0.7
2000045679 2018/05/15 4.3
我的查询是错误的...但是,我不知道该怎么做,
SELECT
tblInt.nameService, TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')), COUNT (*) subTotal
FROM TableDetail tblDetail, TableHead tblHead, TableInternal tblInt
WHERE tblHead.idCode = tblDetail.headCode
AND tblDetail.superService = tblInt.superService
AND TO_CHAR(tblHead.schedule,'dd/MM/yy') =:findByDate
GROUP BY
tblInt.nameService, TO_CHAR(tblHead.schedule,'dd/MM/yy')
ORDER BY TO_DATE(TO_CHAR(tblHead.schedule,'dd/MM/yy')) DESC;
现在我想在同一个查询中获取一个值为 subTotal * tblInt.quantity
的 Total
字段。
但是,我不知道该怎么做。
我的问题 如何将计数乘以另一个数字字段(使用分组依据)?
如果我没有弄错任何东西,你只需要把所有的东西加在一起,分组,你就得到了你的总和。您不需要乘以计数,因为这是隐式完成的。相应(超级?)服务(我没有得到实体)的行在未分组的集中出现两次。当然还有 2.1 + 2.1 = 2 * 2.1.
SELECT i.nameservice,
h.schedule,
sum(i.quantity) total
FROM tablehead h
INNER JOIN tabledetail d
ON d.headcode = h.idcode
INNER JOIN tableinternal i
ON i.superservice = d.superservice
WHERE h.schedule = to_date('2018-05-15', 'YYYY-MM-DD')
GROUP BY i.nameservice,
h.schedule;