
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空值函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複資料
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問題和解答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
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() 函式來檢測 customers 表中 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 查詢顯示 customers 表:
SELECT * FROM customers;以下是 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() 函式來檢測 customers 表中 SALARY 列的變化。CHECKSUM_AGG() 函式始終接受整數型別的列。由於 salary 列包含 decimal 資料型別,因此我們必須將其轉換為 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 | +------------------+