假设有一个电商平台的数据库,其中包含订单表 orders 和订单明细表 order_items,需要对这两张表进行数据稽核,确保订单总金额(total_amount)与订单明细表中的订单金额之和一致。
- 创建订单表
orders
:
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, total_amount DECIMAL(10, 2), status VARCHAR(20) );
- 创建订单明细表
order_items
:
CREATE TABLE order_items ( item_id INT PRIMARY KEY, order_id INT, product_id INT, quantity INT, item_amount DECIMAL(8, 2) );
- 插入测试数据:
INSERT INTO orders (order_id, customer_id, order_date, total_amount, status) VALUES (1, 101, '2023-07-01', 150.00, 'Paid'); INSERT INTO order_items (item_id, order_id, product_id, quantity, item_amount) VALUES (101, 1, 201, 2, 50.00), (102, 1, 202, 1, 30.00), (103, 1, 203, 3, 70.00);
- 执行数据稽核:使用SQL查询进行数据稽核,计算订单表中每个订单的订单总金额,并计算订单明细表中每个订单的订单金额之和,然后进行比对,找出金额不一致的订单。
SELECT o.order_id, o.total_amount AS order_total_amount, SUM(i.item_amount) AS items_total_amount FROM orders o JOIN order_items i ON o.order_id = i.order_id GROUP BY o.order_id, o.total_amount HAVING o.total_amount <> SUM(i.item_amount);
上述查询将返回金额不一致的订单,如果查询结果为空,则说明数据稽核通过,订单表中的订单总金额与订单明细表订单金额之和一致。
标签:订单,稽核,order,案例,amount,item,SQL,total,id From: https://www.cnblogs.com/zyt-bg/p/17593796.html