我有两张桌子.一张Ids及其价格表,以及每张Id的第二张折扣表.在折扣表中,Id可以有很多折扣,我需要知道Id的最终价格.
查询它的最佳方式是什么(在一个查询中)?对于每个id的许多折扣,查询应该是通用的(不仅如下面的例子中提到的那样)
例如表一
id price
1 2.00
2 2.00
3 2.00
Run Code Online (Sandbox Code Playgroud)
表二
id Discount
1 0.20
1 0.30
2 0.40
3 0.50
3 0.60
Run Code Online (Sandbox Code Playgroud)
最后结果:
id OrigPrice PriceAfterDiscount
1 2.00 1.12
2 2.00 1.20
3 2.00 0.40
Run Code Online (Sandbox Code Playgroud) 我有一个同事正在寻找这个,我不记得曾经遇到过这样的事情.
是否有合理的技术可以让你模拟它?
SELECT PRODUCT(X)
FROM
(
SELECT 3 X FROM DUAL
UNION ALL
SELECT 5 X FROM DUAL
UNION ALL
SELECT 2 X FROM DUAL
)
Run Code Online (Sandbox Code Playgroud)
会产生30
如果我们有这样的表格:
Grp Value
Grp1 2
Grp1 5
Grp1 3
Grp2 3
Grp2 -5
Grp2 -2
Grp3 4
Grp3 0
Grp3 1
Grp4 -2
Grp4 -4
Grp5 7
Grp5 NULL
Grp6 NULL
Grp6 NULL
Grp7 -1
Grp7 10
Run Code Online (Sandbox Code Playgroud)
我们如何分组/乘以得到这个?
GrpID Value
Grp1 30
Grp2 30
Grp3 0
Grp4 8
Grp5 7
Grp6 NULL
Grp7 -10
Run Code Online (Sandbox Code Playgroud) 我有一张以下表格:
1 X 10
2 X 30
3 Y 5
4 Y 2
...etc
Run Code Online (Sandbox Code Playgroud)
我需要把它变成:
X 300 //(10 * 30)
Y 10 //(5 * 2)
Run Code Online (Sandbox Code Playgroud)
所以我实际上正在寻找一种乘法函数,我可以像sum,avg和stuff那样使用......这样的人存在吗?
例如:
select field2, **multiply**(field3)
from t
group by field2
Run Code Online (Sandbox Code Playgroud)
谢谢