gpt4 book ai didi

mysql - 如何计算 Talend on Oracle 中连接的行数

转载 作者:行者123 更新时间:2023-11-29 20:27:32 24 4
gpt4 key购买 nike

我有3张 table

supplier(id_supp, name, adress, ...)

Customer(id_cust, name, adress, ...)

Order(id_order, ref_cust, ref_supp, date_order...)

我想创建一个作业,通过 Talend 计算 Supplier 的最后一周、最后两周的订单数量

select 
supp.name,
(
select
count(*)
from
order
where
date_order between sysdate-7 and sysdate
nd ref_supp=id_supp
) as week_1,
(
select
count(*)
from
order
where
date_order between sysdate-14 and sysdate-7
nd ref_supp=id_supp
) as week_2
from supplier supp

我这样做的原因是我的查询花费了很多时间

最佳答案

您需要在 supplierorder 之间进行联接才能获取供应商名称。我显示了内部联接,但如果您需要所有供应商(即使是 order 表中没有订单的供应商),您可以将其更改为左外部联接。

除此之外,您只需读取 order 表一次即可获取所需的所有信息。您的查询执行了多次(请阅读查询的解释计划),这可能就是它花费太长时间的原因。

注意:sysdate 有一个时间组件(也许 date_order 值也有);您编写查询的方式可能会或可能不会完全按照您希望的方式进行。您可能必须用 trunc() 包围 sysdate

select s.name,
count(case when o.date_order between sysdate - 7 and sysdate then 1 end)
as week_1,
count(case when o.date_order between sysdate - 14 and sysdate - 7 then 1 end)
as week_2
from supplier s inner join order o
on s.id_supp = o.ref_supp
;

关于mysql - 如何计算 Talend on Oracle 中连接的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com