【发布时间】:2022-01-15 08:04:22
【问题描述】:
我的代码现在看起来像这样:
Select EXTRACT(YEAR FROM d.dlvr_d),
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do)= 2019
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do) = 2019
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
((Select SUM(e.eqp_pp)
FROM equipment e
INNER JOIN equipment_type y on y.eqp_t_id = e.eqp_t_id
WHERE e.eqp_delete_ind = 'False' and y.eqp_t_delete_ind = 'False' and EXTRACT(YEAR FROM e.eqp_pd)=2019)
+
(SELECT SUM((d.prod_qty_ds)*(p.prod_up))
FROM product p
INNER JOIN delivery d ON p.prod_id = d.prod_id
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2019
GROUP BY EXTRACT(YEAR FROM d.dlvr_d))
+
(SELECT 12*SUM(p.pos_sal)
FROM employee e
INNER JOIN positions p ON p.pos_id = e.pos_id
WHERE e.emp_delete_ind = 'False'))
FROM delivery d
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2019
GROUP BY EXTRACT(YEAR FROM d.dlvr_d)
UNION
Select EXTRACT(YEAR FROM d.dlvr_d),
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do)= 2020
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do) = 2020
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
((Select SUM(e.eqp_pp)
FROM equipment e
INNER JOIN equipment_type y on y.eqp_t_id = e.eqp_t_id
WHERE e.eqp_delete_ind = 'False' and y.eqp_t_delete_ind = 'False' and EXTRACT(YEAR FROM e.eqp_pd)=2020)
+
(SELECT SUM((d.prod_qty_ds)*(p.prod_up))
FROM product p
INNER JOIN delivery d ON p.prod_id = d.prod_id
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2020
GROUP BY EXTRACT(YEAR FROM d.dlvr_d))
+
(SELECT 12*SUM(p.pos_sal)
FROM employee e
INNER JOIN positions p ON p.pos_id = e.pos_id
WHERE e.emp_delete_ind = 'False'))
FROM delivery d
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2020
GROUP BY EXTRACT(YEAR FROM d.dlvr_d)
UNION
Select EXTRACT(YEAR FROM d.dlvr_d),
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do)= 2021
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
(Select SUM(s.serv_p)
FROM customer_orders co
INNER JOIN co_service cs ON co.cust_ordr_id = cs.cust_ordr_id
INNER JOIN service s ON cs.serv_id = s.serv_id
WHERE co.cust_ordr_delete_ind = 'False' and EXTRACT(YEAR FROM co.cust_ordr_do) = 2021
GROUP BY EXTRACT(YEAR FROM co.cust_ordr_do))
-
((Select SUM(e.eqp_pp)
FROM equipment e
INNER JOIN equipment_type y on y.eqp_t_id = e.eqp_t_id
WHERE e.eqp_delete_ind = 'False' and y.eqp_t_delete_ind = 'False' and EXTRACT(YEAR FROM e.eqp_pd)=2021)
+
(SELECT SUM((d.prod_qty_ds)*(p.prod_up))
FROM product p
INNER JOIN delivery d ON p.prod_id = d.prod_id
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2021
GROUP BY EXTRACT(YEAR FROM d.dlvr_d))
+
(SELECT 12*SUM(p.pos_sal)
FROM employee e
INNER JOIN positions p ON p.pos_id = e.pos_id
WHERE e.emp_delete_ind = 'False'))
FROM delivery d
WHERE d.dlvr_delete_ind = 'False' and EXTRACT(YEAR FROM d.dlvr_d)=2021
GROUP BY EXTRACT(YEAR FROM d.dlvr_d)
Annual EARNINGS = 年收入(服务交易的总和)- 年费用(12 个月的工资 + 采购产品到交付的费用 + 购买新设备的费用)
我通过加入服务表(包含商店提供的服务)、co_service 表(每次交易使用的服务)和客户订单表(用于交易)来获得收入,然后我按年份提取它们以获得年度价值
采购费用来自记录来料交货的交货表,设备类型表记录设备的种类(烘干机、洗衣机等),而设备是设备的单个单元(洗衣机-01、洗衣机- 02等)
最后是职位表包含每个员工职位的薪水
【问题讨论】:
-
employee和positions表与delivery表有什么关系?它们与日期有关吗? -
下一个问题,为什么你每年重复两次
Select SUM(s.serv_p) FROM customer_orders co ...(Select SUM(s.serv_p) FROM customer_orders co ...) - (Select SUM(s.serv_p) FROM customer_orders co ...)这个结果总是为零,因为查询被重复了 -
请提供有关您的数据库结构的更多信息。
标签: python sql postgresql datetime union