SQL CHECKSUM_AGG()函数

SQL CHECKSUM_AGG()函数

校验和返回一个值,该值指示输入值是否随时间改变。校验和有助于识别自上次操作以来值是否发生了更改。此外,SQL包含了一个名为CHECKSUM AGG的函数,用于验证单个或一组值。

SQL CHECKSUM_AGG() 函数返回由给定表达式指定的列的校验和值。它对所有列值求和并计算校验和。如果行或行随时间变化,校验和将相应地改变,表明列中的值发生了改变。CHECKSUM_AGG()函数忽略null值。我们可以使用OVER子句和此函数一起使用。此函数仅适用于数字列。

此函数还允许使用两个可选修饰符ALL和DISTINCT。如果使用ALL,则此函数计算所有值的聚合。如果使用DISTINCT,则此函数返回唯一且非null值的数量。

语法

以下是SQL CHECKSUM_AGG() 函数的语法-

CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )

参数

  • expression −一个整数表达式。checksum_agg()不允许使用聚合函数或子查询。

示例

在下面的示例中,我们使用SQL CHECKSUM_AGG()函数来检测客户表的AGE列中的更改。

使用CREATE语句,我们创建了一个名为customers的表−

CREATE TABLE customers(ID INT NOT NULL, 
NAME VARCHAR(30) NOT NULL, 
AGE INT NOT NULL, 
ADDRESS CHAR(30), 
SALARY DECIMAL(18, 2));

表格存储了ID、NAME、AGE、ADDRESS和SALARY。现在我们正在使用INSERT语句向customers表中插入7条记录。

INSERT INTO customers VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
INSERT INTO customers VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
INSERT INTO customers VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
INSERT INTO customers VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
INSERT INTO customers VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
INSERT INTO customers VALUES(6, 'Komal', 22, 'MP', 4500.00);
INSERT INTO customers VALUES(7, 'Aman', 23, 'Ranchi', null);

下面的SQL查询显示了客户表 –

SELECT * FROM customers;
+----+----------+-----+-----------+---------+
| ID | NAME     | AGE | ADDRESS   | SALARY  |
+----+----------+-----+-----------+---------+
|  1 | Ramesh   |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan   |  25 | Delhi     | 1500.00 |
|  3 | kaushik  |  23 | Kota      | 2000.00 |
|  4 | Chaitali |  25 | Mumbai    | 6500.00 |
|  5 | Hardik   |  27 | Bhopal    | 8500.00 |
|  6 | Komal    |  22 | MP        | 4500.00 |
|  7 | Aman     |  23 | Ranchi    |    NULL |
+----+----------+-----+-----------+---------+

下面的SQL查询显示在age列被更新之后的原始校验和值和更新后的校验和值。−

-- get the checksum value before the column value changed.
SELECT CHECKSUM_AGG(AGE) AS original_checksum from customers;
UPDATE customers SET AGE = 30 WHERE NAME = 'Aman';
--get the checksum of the modified column.
SELECT CHECKSUM_AGG(AGE) AS original_checksum from customers;

输出

以下是上述SQL查询的输出结果−

+--------------------+
|  original_checksum |
+--------------------+
|                 32 | 
+--------------------+

+--------------------+
|  original_checksum |
+--------------------+
|                 36 | 
+--------------------+

示例

在下面的示例中,通过将DISTINCT作为参数之一传递给checksum_agg()函数,对不同的整数值调用该函数。

-- get the checksum of all value.
SELECT CHECKSUM_AGG(AGE) AS original_checksum from customers;
--get the checksum of distinct value.
SELECT CHECKSUM_AGG(DISTINCT AGE) AS original_checksum from customers;

输出

以下是上述SQL查询的输出结果 –

+--------------------+
|  original_checksum |
+--------------------+
|                 36 | 
+--------------------+

+--------------------+
|  original_checksum |
+--------------------+
|                 61 | 
+--------------------+

示例

在下面的示例中,我们使用SQL的CHECKSUM_AGG()函数来检测客户表的SALARY列中的变化。CHECKSUM_AGG()函数始终接受整数类型的列。由于salary列包含小数数据类型,我们必须将其转换为INT。

以下SQL查询显示了SALARY的原始和修改后的校验和 –

--original checksum
SELECT CHECKSUM_AGG(CAST(SALARY AS INT)) AS original_SALARY from customers;
UPDATE customers SET SALARY = 5000 WHERE NAME = 'Aman';
--checksum after modified
SELECT CHECKSUM_AGG(CAST(SALARY AS INT)) AS original_SALARY from customers;

输出

以下是上述SQL查询的输出结果-

+------------------+
|  original_SALARY |
+------------------+
|            11288 | 
+------------------+

+------------------+
|  original_SALARY |
+------------------+
|            16272 | 
+------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程