首页 > 数据库 >用SQL实现数据稽核的简单案例

用SQL实现数据稽核的简单案例

时间:2023-07-31 16:33:13浏览次数:41  
标签:订单 稽核 order 案例 amount item SQL total id

假设有一个电商平台的数据库,其中包含订单表 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

相关文章

  • mysql常见错误
    1.C#在centos7的环境下面连接mysql数据库,报错Authenticationmethod'caching_sha2_password'failed.Eitheruseasecureconnection,specifytheserver'sRSApublickeywithServerRSAPublicKeyFile,orsetAllowPublicKeyRetrieval=True.DbType="MySql"......
  • MySQL DML 闪回之 binlog2sql
    一直以来,由于DBA的误操作或者业务bug,导致误删数据的情况都时有发生。当出现误删数据的情况时,从线上操作日志构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管哪种,都非常费时费力,并且容易出错。可能有的同学会说从从库恢复,但实时主从备份只能防止硬件问题,比如主库的......
  • mysql根据mysqlbinlog恢复找回被删除的数据库
    年初和朋友一起做了个项目,到现在还没收到钱呢,今天中午时候突然听说之前的数据库被攻击了,业务数据库全部被删除。看有没有什么办法恢复,要是恢复不了,肯定也别想拿钱了吧?READMEFORRECOVERYDATAAllyourdatabaseswasbackedup.Youneedtoemailusatxednydy@fexbox......
  • mysqldump 导出与导入
    导出数据库脚本(export.sh):#!/bin/bash#数据库连接信息DB_HOST="localhost"DB_USER="root"DB_PASSWORD="password"DB_NAME="your_database_name"#导出表结构和表数据到文件mysqldump-h$DB_HOST-u$DB_USER-p$DB_PASSWORD--no-data--skip-loc......
  • 简单配置Sql专家云
    一、实例配置1.添加实例   点击全面诊断实例配置,右上角点击添加。2.填写实例信息  根据下图填写对应的信息,连接测试成功后点击保存。3.添加完成  4.修改实例   找到对应的实例,点击下图蓝色框修改即可。 5.停止实例  找到对应的实例,点击下图红色框......
  • docker-mysql(集群)
    第一步:安装docker+并获取mysql镜像第二步:运行master的mysql容器dockerrun-id\--name=mysql_master\-p3307:3306\-v$PWD/mysql-master/conf:/etc/mysql/conf.d\-v$PWD/mysql-master/logs:/logs\-v$PWD/mysql-master/data:/var/lib/mysql\-eMYSQL_ROOT_PASSWO......
  • 编程将文本文件导入sql
    1、如何把文本文件导入SQL数据库里面的一个表?2、文本文件导入到数据库中的几种方法3、如何用C#把下面txt的内容导入到sqlserver中?4、c#快速把txt文件导入sql如何把文本文件导入SQL数据库里面的一个表?1、首先双击打开sqlserver,右击需要导入数据的数据库,如图所示。点击......
  • mysql的索引机制
    索引的概念索引是一种特殊的数据。保存的是其他数据的位置,查找数据时先查找索引查询数据,提高查找效率。索引是越多越好吗?不是索引的优缺点优点:​ 1.提高查询效率缺点:​ 1.占用额外的磁盘空间​ 2.创建索引需要较长时间​ 3.索引需要维护索引的类型......
  • 识别阻塞查询和 SQL Server 阻塞原因的技术
    由数据库对象锁定导致的进程阻塞是一个常见问题。锁定通过强制每个执行的SQLServer事务通过ACID测试来确保数据库中存储的数据的完整性。它认为每笔交易都必须满足以下要求:原子性——事务要么在执行时完全完成,要么根本不执行一致性——事务必须创建一个有效的新数据状态,或者......
  • postgresql | sql语句表名和列名引号问题
    根据您提供的SQL查询语句:SELECT*FROM"features"WHERE"layer"="FSHFAC"LIMIT10;在语法上看起来没有问题,但在实际运行时可能会出现一些问题,这取决于数据库和数据表的结构。表名和列名引号:在SQL中,使用双引号""可以将标识符(例如表名、列名等)加以引号。但是,要确保......